js学习

 一、什么是对象     
所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。

二、原型链
因为每个对象和原型都有原型,对象的原型指向原型对象,
 而父的原型又指向父的父,这种原型层层连接起来的就构成了原型链。

三、局部变量、全局变量

局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两个循环中都定义同名的局部变量i,而局部变量i的作用域在那个循环体内

具体来说,全局变量和局部变量的区别如下:

1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等

2. 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区

3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了

4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量

四、形参、实参、作用域

通俗的说,形参就是函数定义时参数表的各个变量,实参就是调用函数时给函数的变量(写在函数名后的圆括号里)比如函数 int fun(int a,int c){some operation;}a和c都是形参。

当我调用函数fun时,例如:

int n,i=1,j=2;
n=fun(i,j);
调用fun(i,j)形式中的i,j就是实参。

五、作用域

作用域(scope)
作用域在许多程序设计语言中非常重要。

通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。
对于对象而言(其他也是一样的),在main函数中,对象的作用域为他所在的最近的一对花括号内。在后花括号处析构函数被调用;全局的对象的作用域为声明之后的整个文件,析构函数在最后被调用。另外,临时产生的对象在使用完后立即会被析构。

六、内置函数
编程语言中预先定义的函数。
具体:嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 作用是提高程序的执行效率,大多编程语言都有自己的内置函数,如javascript内置函数等。 内置函数的存在极大的提升了程序员的效率和程序的阅读。

七、js函数调用的四种方法
js的函数调用会免费奉送两个而外的参数就是 this 和 arguments 。arguments是参数组,他并不是一个真实的数组,但是可以使用.length方法获得长度。

书上有说4中调用方式:
?方法调用模式
?函数调用模式
?构造器调用模式
?apply调用模式
1:方法调用模式

请注意this此时指向myobject。
[javascript] view plain copy print?
01./*方法调用模式*/ 
02.    var myobject={ 
03.            value:0, 
04.            inc:function(){ 
05.                    alert(this.value) 
06.                } 
07.        } 
08.    myobject.inc()

2:函数调用模式
请注意this此时指向window
[javascript] view plain copy print?
01./*函数调用模式*/ 
02.     
03.    var add=function(a,b){ 
04.        alert(this)//this被绑顶到window 
05.            return a+b; 
06.        } 
07.    var sum=add(3,4); 
08.    alert(sum)

3:构造器调用模式
JavaScript语言精粹一书建议摒弃这中方式。因为有更好的方式。这里先不介绍。下次发表博文的时候贴出来。
会在这里加一个连接。
[javascript] view plain copy print?
01./*构造器调用模式  摒弃*/ 
02.     
03.    var quo=function(string){ 
04.            this.status=string; 
05.        } 
06.    quo.prototype.get_status=function(){ 
07.            return this.status; 
08.        } 
09.    var qq=new quo("aaa"); 
10.    alert(qq.get_status());

4:apply调用模式
==我们可以来看一个更有用的apply实例。看最下面的代码。
[javascript] view plain copy print?
01./*apply*/ 
02.    //注意使用了上面的sum函数 
03.    //与myobject 
04.    //这中调用方式的优点在于可以指向this指向的对象。 
05.    //apply的第一个参数就是this指针要指向的对象 
06.    var arr=[10,20]; 
07.    var sum=add.apply(myobject,arr); 
08.    alert(sum);

八、数组里怎样插入和取出内容

添加一个元素
1var array = [1,2,3,4,6];
2array.splice(4,0,5);
 结果:array为[1,2,3,4,5,6]。
删除并替换一个元素
1var array = [1,2,2,4,5];
2array.splice(2,1,2);
结果:array为[1,2,3,4,5]。

九、禁止鼠标点击的使用方法

JavaScript有一个preventDefault方法, 可用以来取消事件的默认动作。比如取消打开链接,选择文本或拖放等。
代码如下:
event.preventDefault()
该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。例如,如果 type 属性是 “submit”,在事件传播的任意阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。注意,如果 Event 对象的 cancelable 属性是 fasle,那么就没有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用。
这种方法可以阻止当前元素的浏览器默认行为,但并不阻止事件被父级及document响应。如果想彻底取消事件,则可使用stopPropagation
代码如下:
event.stopPropagation()
该方法将停止事件的传播,阻止它被分派到其他 Document 节点。在事件传播的任何阶段都可以调用它。注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点。
这两种是在JS中的常用取消事件的方法,但是其实还有一种用纯css就能实现取消事件响应的方法,pointer-events,使用起来更加简单,它可以:
     1、阻止用户的点击动作产生任何效果
     2、阻止缺省鼠标指针的显示
     3、阻止CSS里的hover和active状态的变化触发事件
     4、阻止JavaScript点击动作触发的事件
比如以下CSS就顺起到将禁用的按钮灰掉的效果
代码如下:
.disabled {
 pointer-events: none;
 cursor: default;
 opacity: 0.6;
}
这种方法明显比js代码更加灵活,可惜ie9不支持。以上就是本文的全部内容,希望对大家的学习和工作能有所帮助。

十、浏览器如何设置二维码插件的方法/步骤

1.不同的浏览器操作是不一样的,比如chrome就需要去网上商店去下载,IE需要安装插件,目前火狐只需要轻松一设置即可。
2.然后,选择工具栏上的最右上角处的“菜单”选择。接着选择“附加组件”。
3.然后选择“扩展”里的“附加组件管理器”。
4.选择“二维码“选项,并选择启用,确定即可。
5.此时,再打开浏览器新窗口,然后点一下二维码图标,生成一个二维码图标,
6.然后再用手机扫描一下即可。

十一、递归

递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。
这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。
(3)数据的结构形式是按递归定义的。
如二叉树、广义表等,由于结构本身固有的递归特性,则它们的操作可递归地描述。
递归的缺点:
递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。

十二、数组和函数

1、如果对全部元素赋初值(即提供全部初始数据), 则定义数组时对第一维的长度可以不指定, 但第二维的长度不能省。

2.gets(字符数组)
    (1)格式:gets(字符数组名) 
    (2)作用:从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的首地址。

gets函数这里注意  如果和scanf("%s",k);一起出现在程序中。如果gets在scanf在前面 则不执行scanf函数。只执行gets函数  如果在后面  会执行。

while(scanf("%d",&n) != EOF)
     {
         scanf("%c",&h);
         gets(a);
         scanf("%c",&h);
         gets(b);
         scanf("%c",&h);
         gets(c);
   }
while(scanf("%d",&n) != EOF)
     {
         scanf("%s",a);
         scanf("%s",b);
         scanf("%s",c);
  }

类似这样子。
当要调用gets的时候,如果前面有输入数组要敲回车,则会将回车赋给gets;
这时要用scanf来输入,可以获取整行的完全信息(无括号)
例:

#include"stdio.h"
main(  )
{
     char st[15];
     printf("input string:\n");
     gets(st);
     puts(st);
}

可以看出当输入的字符串中含有空格时,输出仍为全部字符串。说明gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。
3.字符串连接函数strcat

(1)格式:strcat(字符数组名1,字符数组名2) 
(2)作用:连接两个字符数组中的字符串,把 字符串2接到字符串1 的后面,结果放在字 符数组1中,函数调用后得到一个函数值——字符数组1的地址。

例:  strcat函数的使用
#include"string.h"
main(  )
{
     static char st1[30]="My name is ";
     int st2[10];
     printf("input your name:\n");
     gets(st2);
     strcat(st1,st2);
     puts(st1);
}

4.字符串复制函数strcpy
    (1)格式:strcpy(字符数组名1,字符数组名2) 
(2)作用:将字符串2复制到字符串1中去。字符数名2,
                       也可以是一个字符串常量。这时相当于把一
                       个字符串赋予一个字符数组。不能用赋值语
                       句对整个数组进行赋值。
 例:  复制函数的使用
#include"string.h"
main(  )
{
     static char st1[15],st2[]="C Language";
     strcpy(st1,st2);
puts(st1);
printf("\n");
}

5.字符串比较函数strcmp
(1)格式:strcmp(字符数组名1,字符数组名2)
(2)作用:比较字符串1和字符串2。
(3)规则:
A.对两个字符串自左至右逐个字符相比(按照ASCII码值
   大小比较),直到出现不同的字符或遇到`\0`为止。如全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。并由函数返回值返回比较结果。
B.如果参加比较的两个字符串都由英文字母组成,则有一个简单的规律:在英文字典中位置在后面的为“大”。注意:小写字母比大写字母“大”。
C.比较的结果由函数值带回。
(I)如果字符串1==字符串2,函数值为0;
(II)如果字符串2>字符串2,函数值为一正整数;
(III)如果字符串1<字符串2,函数值为一负整数。
注意:对两个字符串比较时的书写格式。
例如:if (str1=str2) printf("yes");

是不行的;而应该使用
             if (strcmp(str1,str2)==0) printf("yes");

6.测试字符串长度函数strlen
    (1)格式:strlen(字符数组名) 
    (2)作用:测试字符串的长度。函数的值为字符串中
                          的实际长度,不包括`\0`在内。
例: 
#include"string.h"
main()
{
int k;
      static char st[]="C language";
      k=strlen(st);
      printf("The lenth of the string is %d\n",k);
}

7.大小写转换函数
(1)strlwr(字符串)
作用:将字符串中大写字母转换成小写字母。
(2)strupr(字符串)
作用:将串中的小写字母转换成大写字母。

时间: 2024-11-03 20:59:38

js学习的相关文章

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

NODE.JS学习的常见误区及四大名著

NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang/p/4374681.html 收到了很多兄弟的热情回复和激烈讨论,在此深表感谢,有的朋友觉得我写的比较粗犷,没有给出具体的性能分析和对比,在此我想说的是其实好多东西的性能分析,根本就不用我写到博客上,其一是如果我写了,很多人同样会觉得不客观,不中立,其二是网上很多中立的机构,随便搜索一下,对比太多

Ext JS学习第五天 Ext_window组件(一)

此文来记录学习笔记 •第一个组件:Ext.window.Window.对于组件,也就是Ext最吸引开发者的地方,那么我们要真正的使用Ext的组件,首先必须学会阅读API文档. –xtype:组件的别名 –Hierarchy 层次结构 –Inherited mixins 混入的类 –Requires 该组件需要使用的类 –configs:组件的配置信息 –properties:组件的属性 –methods:组件的方法 –events:组件的事件 •window组件常用属性和方法讲解: •confi

JavaScript模块加载框架sea.js 学习一

简单总结sea.js 学习 文件目录结构 /sea/sea.js      下载地址  http://seajs.org/docs/#downloads /sea/jquery-sea.js   下载地址 http://jquery.com/download/ /sea/sea_config.js /sea/home.jsdata.js /sea/data.js 1.html页面代码文件 <style> .ch{height:200px;width:200px;background:#ccc;

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

Ext JS学习第五天 Ext_window组件(二)

此文用来记录学习笔记 •上一讲我们已经学过了window的使用,那么在这将中,我们将结合然后把Ext中需要注意的地方,以及组建的使用给予介绍.indow做几个Web开发的经典示例. •ExtWeb实战300例: –例1:点击按钮打开一个window,window重复创建的问题 •重点分析:这个问题是初学者经常会犯错的地方,一般来说简单的代码不会产生此问题,但是如果以后代码复杂以后,这个问题如果发生调试起来会非常麻烦!! 附上栗子代码 1 Ext.onReady(function () { 2 3

Ext JS学习第三天 我们所熟悉的javascript(二)

•javascript之函数 •对于Ext开发者,我还是希望你能对javascript原生的东西非常了解.甚至熟练掌握运用.那么函数,无疑是非常重要的概念.首先在前面一讲,我们知道了函数也是一种数据类型,创建函数一共有三种方式.每种方式他们都会有区别,分别为: –function语句形式 –函数直接量形式 –构造函数形式 •函数中的arguments对象 –argument的作用一:接受函数的实际参数 –argument的作用二:用于做递归操作 栗子代码 1 //Function 函数 2 //

Ext JS学习第二天 我们所熟悉的javascript(一)

此文用来记录学习笔记: •ExtJS是一个强大的javascript框架,如果想真正的掌握ExtJS,那么我们必须要对javascript有一定的认识,所以很有必要静下心来,抱着一本javascript书籍,恶补一番.推荐书籍<javascript高级程序设计>.<javascript设计模式>. •在这里我们学习一下可能你从未接触过的javascript,这些javascript知识是我们要学好ExtJS这个框架非常有必要的.必备的知识.我们需要掌握的内容有: –javascri

Angular JS 学习笔记

特定领域语言 编译器:遍历DOM来查找和它相关的属性, 分为编译和链接两个阶段, 指令:当关联的HTML结构进入编译阶段时应该执行的操作,可以写在名称里,属性里,css类名里:本质上是函数 稳定的DOM:绑定了数据模型的DOM元素的实例不会在绑定的生命周期发生改变 作用域:用来检测模型的改变和为表达式提供执行上下文的 AngularJS 和其它模板系统不同,它使用的是DOM而不是字符串 指令: 由某个属性.元素名称.css类名出现而导致的行为,或者说是DOM的变化 Filter过滤器:扮演着数据