【发布时间】:2013-02-14 16:07:58
【问题描述】:
我正在阅读 _.bind 和 _bindAll 的教程:http://blog.bigbinary.com/2011/08/18/understanding-bind-and-bindall-in-backbone.html
网站有如下代码
function Developer(skill) {
this.skill = skill;
this.says = function(){
alert(this.skill + ' rocks!');
}
}
var john = new Developer('Ruby');
john.says(); //Ruby rocks!
对
function Developer(skill) {
this.skill = skill;
this.says = function(){
alert(this.skill + ' rocks!');
}
}
var john = new Developer('Ruby');
var func = john.says;
func();// undefined rocks!
为什么存储对函数的引用然后调用该函数会导致 this 具有窗口上下文?
【问题讨论】:
-
因为变量
func的上下文是window对象,而不是john。你应该做var func = john.says.bind(john);
标签: javascript