【发布时间】:2009-12-26 23:36:19
【问题描述】:
是否可以提取函数调用范围?
我有这个例子:
var myObject = {
id: 1,
printId: function() {
var myId = function() {
return this.id;
}
console.log(myId());
}
}
myObject.printId(); // prints 'undefined'
上面的示例打印出undefined,因为'this' 似乎是默认情况下新函数内的窗口范围(在本例中为myId)。有什么方法可以在执行之前使用应用正确范围的代理?
类似这样的东西(虚构):
var execute = function( fn ) {
fn.apply(fn.caller.scope);
}
var myObject = {
id: 1,
printId: function() {
var myId = function() {
return this.id;
}
execute( myId );
}
}
【问题讨论】:
标签: javascript scope this