【发布时间】:2016-12-03 00:22:07
【问题描述】:
这是一个例子
function banana() {
this.size = 5;
this.say_size = function() {
console.log(this.size);
}.bind(this);
}
banana.prototype.say_size2 = function() {
console.log(this.size);
}
var b = new banana();
b.say_size();
b.say_size2(); //TLDR: why does this line work without binding?
setTimeout(b.say_size, 100);
setTimeout(b.say_size2, 200);
所以,在我直接调用 b.say_size 或 b.say_size2 的情况下,'this' 指的是香蕉对象,我得到 '5' 作为两者的输出。
如果函数被计时器或事件调用,'this' 设置为 window,除非被调用的函数绑定到对象。
我不明白 say_size2 在原型函数没有绑定到任何东西的情况下直接调用时如何获得正确的“this”?
【问题讨论】:
标签: javascript