引用的概念实际上跟C语言的差不多,我理解就是一个指向内存地址的指针,只不过没有指向指针的指针之类。针对引用类型进行的不同操作,会造成互相的影响。
在javaScript里,有五种基本类型,undefined,null,Number,String,Boolean,还有一种复杂类型是Object。,Object就是引用类型。
引用类型在JS里,基本的引用类型有很多,包括但不限于Object,Array,Math,Date,RegExp,Function,Boolean,Number,String。Boolean、Number、String即使基本类型,也是引用类型。
这里说一说Function类型,也就是说好所Function的实例:函数。
- 定义函数有两种方法,一种是声明方式定义,一种是表达式方式定义。这两个的区别在于函数的定义是在什么时候,如果函数的定义在表达式里,那么我们就说是表达式方式定义的。
- 函数没有重载,同名的新函数会覆盖同名的旧函数。
- 函数声明在js里,即使在调用语句之后也是可以的,这成为声明提升,这个特性针对变量也是一样的。
- 函数可以做为参数和返回值存在。
- 函数内部有两个特殊对象:this和arguments
- 函数内部有两个特殊属性:callee,是一个指针,指向函数本身。caller:也是一个指针,指向调用当前函数的函数。a调用b,那么b里边的arguments.caller就指向a。
function a() { b(); //调用b } function b() { alert(b.caller); //a.caller就指向a,相当于alert(a) alert(a); } a();
- 函数有两个特殊的方法:apply()和call()。这两个函数都有一个作用,就是在特定的作用域内调用函数,使被调用的函数的this值变为我们设置的this值,这样就可以扩充函数运行的作用域,而且低耦合!ECMAScript5定义了一个bind()方法,也是差不多的效果。
function sum(num1,num2) { alert(num1+num2); } function sum1(num1,num2) { sum.apply(this,arguments); //调用了sum函数,并且把sum1的this和arguments对象做为参数,也就是把sum的this变成了sum1的this,sum的arguments对象变成了sum1的arguments对象。 } sum1(1,2); //3
时间: 2024-07-28 21:06:04