关于call()和apply()的大抵用法

先引见一下call()的用法,apply()的用法与之大抵雷同,只不过参数列表略有不同

call()在我看来重要的功用就是在不修改对象的情况下对对象的属性举行 重写,使之继续一个新对象的属性

Symtax: fun.call(thisArg[, arg1[, arg2[, ...]]])

先举个简朴的例子:

function vehicle(color, speed) {
    this.color = color;
    this.speed = speed;
}

function car(color,speed,price) {
    vehicle.call(this,arguments);
    this.price = price;
}

var mycar = new car("red", 100, 2000);
alert("汽车色彩是" + mycar.color + ", 速率是 " +
       mycar.speed + ", 价钱是" + mycar.price);
//汽车色彩是red,速率是100,价钱是2000  

    经由过程例子能够看出能够call要领增添对象的属性信息,
    也能够经由过程运用call要领掩盖原对象的属性
    
  

在举个简朴的和作用域连系的例子

var x = 1;
function method() {
    alert(this.x);
}

var c = {};
c.x = 0;
c.m = method;

c.m.apply(); //1,此时挪用的是全局对象
c.m.apply(c); //0,此时挪用的是对象c

    
    
    

    原文作者:vincent_xyb
    原文地址: https://segmentfault.com/a/1190000005060582
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞