标签:
1、定义:
call : 调用一个对象的一个方法,以另一个对象替换当前的对象。
apply : 应用某一对象的一个方法,用另一个对象替换当前的对象。
2、用法:
call:call(thisObj, arg1, arg2, ...); 说明:thisObj 通常表示一个对象,如果没有提供 thisObj 参数,那么 Global 对象将作为 thisObj 。第二个参数开始,如 arg1...可以传递任意形式参数。
apply : apply(thisObj, [argArray]); 说明:thisObj 通常表示一个对象,如果没有提供 thisObj 参数,那么 Global 对象将作为 thisObj。 第二个参数开始,必须是array 或 arguments。
3、区别:
两者区别在于第二个参数。
4、个人理解 :
其实就是把前一对象的方法应用到后一对象上(括号中的第一个参数)。也就是改变了this指针的指向。
5、啥也不说,上几个简单代码 :
1 function func1(name){ 2 this.name = name; 3 this.showName = function(){ 4 console.log(this.name); 5 } 6 } 7 8 function func2(name){ 9 this.name= name; 10 } 11 12 var obj1 = new func1("func1"); 13 var obj2 = new func2("func2"); 14 obj1.showName(); 15 obj2.showName(); //直接报错,因为obj2里没有 showName() 方法 16 obj1.showName.call(obj2); //这样就可以把 obj1 中的 showName() 方法给 obj2 用
6、用来实现继承
1 function func1(name){ 2 this.name = name; 3 this.showName = function(){ 4 console.log(this.name); 5 } 6 } 7 8 function func2(name){ 9 func1.call(this,name); 10 } 11 12 var obj2 = new func2("func2"); 13 obj2.showName();
标签:
原文地址:http://www.cnblogs.com/liangdaye/p/5407337.html