美文网首页
call 和 apply

call 和 apply

作者: 距离方丈 | 来源:发表于2018-07-10 14:28 被阅读0次

每个函数都有 call() 和 apply() 这两个非继承而来的方法。

call apply 都是为了改变某个函数运行时的上下文而存在的,也就是为了改变函数体内部 this 的指向。call 和 apply 二者的作用完全一样,只是接受参数的方式不太一样。

1)用法:

obj.call( thisObj , arg1 , arg2, ...);

obj.apply( thisObj , [arg1 , arg2, ...]);

把 obj (即 this)绑定到 thisObj ,这时候 thisObj 具备了 obj 的属性和方法,绑定后会立即执行函数。

唯一区别是 apply 接受的是数组参数,call 接受的是连续参数

2)应用:

    a.冒充函数改变作用域

改变作用域

    b.通过 call 和 apply ,我们可以实现对象继承。

实现对象继承

看到别人分享还有一个bind()

用法:obj.bind( thisObj , arg1, arg2, ...);

把 obj 绑定到 thisObj ,这时候 thisObj 具备了obj的属性和方法。与 call 和 apply 不同的是,bind 绑定后不会立即执行。

如果 bind 的第一个参数是 null 或者 undefined ,等于将 this 绑定到全局对象。

相关文章

网友评论

      本文标题:call 和 apply

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