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其实是你点击的元素!!