this和函数调用语法糖

var obj = {
  init:function(){
    console.log(this.id);
  },
  id:1
}

调用函数时的obj.init()是一种语法糖,其实浏览器的调用形式是obj.init.call(obj)
如果我们还有一个对象

var obj2 = {
  id:2
}

我们按正规的方式调用obj.init.call(obj2)时我们会发现,这时init函数里的this变成了obj2。
js的对象是松散的,我们可以通过call这样的函数,让对象调用其他对象的方法。
所以我们一定要注意与下面类似的代码:

button.onclick = this.click

其实当你点击按钮时click函数的调用形式是这样:

this.click.call(button)

也就是click内部的this其实是你点击的元素!!

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

相关阅读更多精彩内容

友情链接更多精彩内容