码迷,mamicode.com
首页 > 移动开发 > 详细

关于call 与 apply 那些事

时间:2016-04-19 11:35:20      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

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();

 

关于call 与 apply 那些事

标签:

原文地址:http://www.cnblogs.com/liangdaye/p/5407337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!