美文网首页
call和apply

call和apply

作者: 闪电西兰花 | 来源:发表于2017-04-08 00:10 被阅读0次

    每个函数都包含2个非继承而来的写法:apply()call()

    • 作用:2者都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
    • 区别:仅在于接收参数的方式不同,第一个参数都是this值,也就是运行函数的作用域;而第二个参数,apply()接收参数数组(可以是Array实例,也可以是arguments对象),call()接收参数列表
    function animal(name,age,color){
        this.name = name;
        this.age = age;
        this.color = color;
        console.log(this);
    }
    var dog = new animal;
    animal.call(dog,'Alex',3,'white');            //{name: "Alex", age: 3, color: "white"}
    animal.apply(dog,['Alex',3,'white']);         //{name: "Alex", age: 3, color: "white"}
    
    • apply()call()真正强大之处在于能够扩充函数赖以运行的区域
    var name = "Taylor";
    var boy = {name:"Asher"}
    function sayName(){
          console.log(this.name);
    }
    sayName();                     //Taylor
    sayName.call(boy);             //Asher
    

    相关文章

      网友评论

          本文标题:call和apply

          本文链接:https://www.haomeiwen.com/subject/qtohattx.html