(一) call方法
语法:presentObj.call(thisObj,arg1,arg2,arg3...)
参数thisObj :将被用作当前对象presentObj的对象。
当thisObj无参数时,this为Global对象。其作用就是改变对象的内部指针this指向的内容。
参数arg1,arg2,...将被传递方法参数序列,即presentObj函数的参数序列,
说明
1,call 方法可以用来代替另一个对象调用一个方法。//有点不好理解,之后补全以下
2,最常见用法,call方法可以将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象。例子:
var func = new function () {this.a = "func"};
var myFunc = function (x) { alert(this.a);
alert(x);
/* body... */
}
myFunc.call(func,"var"); var cat = "the cat";
function say() {
console.log(this);
/* body... */
}
say();//输出:window
say.call(cat);//输出:string -->cat
(二)apply方法
语法:apply(thisObj,[argArray])
定义:应用某一个对象的一个方法,用另一个对象替换当前对象。
说明
如果argArray不是一个有效的数组或者不是arguments对象,那么会导致一个TypeError。
(三)arguments对象//以后,理解后继续保全
arguments对象实际上是当前函数的一个内置属性。
arguments对象的长度是由实参个数而不是形参个数决定的。
形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。对于arguments和值都存在的情况下,两者值是同步的,但是,针对其中一个无值的情况下,对于此无值得情形值不会得以同步。