javascript中call函数与apply

javascript中的call方法使当前对象可以调用另一个对象的方法,即改变this的指向内容

 1 var first_object = {
 2 num: 42
 3 };
 4 var second_object = {
 5 num: 24
 6 };
 7 function multiply(mult) {
 8 return this.num * mult;
 9 }
10 alert(multiply.call(first_object, 5)); // 210
View Code

此时返回的是执行结果,210。可以看到first_object 中的this变成 了当前对象中的first_object中的this。并且first_object拥有当前对象中的所有方法和属性。

call函数的使用方式为:

call([thisObj[,arg1[, arg2[, [,.argN]]]]])

thisObj

选中对象

arg1,arg2..argN

可选项。将被传递方法参数序列。

 1 function Class1() 
 2 { 
 3     this.name = "class1"; 
 4 
 5     this.showNam = function() 
 6     { 
 7         alert(this.name); 
 8     } 
 9 } 
10 
11 function Class2() 
12 { 
13     this.name = "class2"; 
14 } 
15 
16 var c1 = new Class1(); 
17 var c2 = new Class2(); 
18 
19 c1.showNam.call(c2); 

call 的意思是把 c1 的方法放到c2上执行,原来c2是没有showNam() 方法,现在是把c1 的showNam()方法放到 c2 上来执行,所以this.name 应该是 class2,执行的结果就是 :alert("class2"); 

 

还可以用call实现继承

function Class1() 

    this.showTxt = function(txt) 
    { 
        alert(txt); 
    } 


function Class2() 

    Class1.call(this); 


var c2 = new Class2(); 

c2.showTxt("cc"); 

这样 Class2 就继承Class1了,Class1.call(this) 的 意思就是使用 Class1 对象代替this对象,那么 Class2 中不就有Class1 的所有属性和方法了吗,c2 对象就能够直接调用Class1 的方法以及属性了,执行结果就是:alert(“cc”); 

 

apply()函数和call()作用是一样的,只不过apply传入两个参数第一个参数和call()中的第一个参数是一样的,第二个参数是个数组。

转载于:https://www.cnblogs.com/mole/p/3994824.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值