call和apply

每个函数都包含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
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容