this和函数调用语法糖

2017-08-28  本文已影响0人  size_of
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其实是你点击的元素!!

上一篇下一篇

猜你喜欢

热点阅读