定义:
apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments)即A对象应用B对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2)即A对象调用B对象的方法
从定义中可以看出,call和apply都是调用一个对象的一个方法,用另一个对象替换当前对象。而不同之处在于传递的参数,apply最多只能有两个参数——新this对象和一个数组argArray,如果arg不是数组则会报错TypeError;
call则可以传递多个参数,第一个参数和apply一样,是用来替换的对象,后边是参数列表。
1.apply与call是更改对象的内部指针,即改变对象的this指向的内容;
2.call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this,后面的参数都是传递给当前对象的参数。
详细用法如下:
1.call()
语法:obj1.call(obj2[,param1,param2,...]);
定义:用obj2对象来代替obj1,调用obj1的方法。即将obj1应用到obj2上;
说明:call 方法可以用来代替另一个对象调用一个方法,call 方法可将一个函数的对象上下文从初始的上下文改变为由 obj2 指定的新对象,如果没有提供 obj2参数,那么 Global 对象被用作 obj2。
2.apply()
语法:obj1.call(obj2[,arrArg]);
定义:用obj2对象来代替obj1,调用obj1的方法,即将obj1应用到obj2上,
说明:call ()和apply()作用一样,但是call()可以接收任何类型的参数,而apply()只能接收数组参数。
3.基本用法
4.继承特性