javascript中apply与call的应用与区别

来源:互联网 发布:淘宝皇冠和蓝冠 编辑:程序博客网 时间:2024/06/11 08:52

作用

总的说来两者的作用都是一样的 都是为了改变作用域
举例来说:

//注意,a是没有定义say方法的function a(name){    this.name  = name}                   function b(name){  this.name = name;  this.say = function(){      console.log(this.name);  }}var a = new a("zhangsan");var b = new b("lisi")

此时

console.log(typeof(a.say()))   //1b.say.call(a);   //2a.say();   //3

输出结果为:

这里写图片描述

从1中可以看出a没有定义say方法。
但是2却执行了say的操作。
3同样显示没有定义。

这就是call的作用所在,临时改变作用域。相当于在执行2操作的时间内 a短暂借用了b的say方法。却不会直接为a也生成该方法。而这些操作和b毫无关系。b唯一的作用只是借出方法。


而call与apply的区别在于所跟参数不同。apply参数为数组。(网上很多说明就不做详解)

0 0
原创粉丝点击