是否可以提取函数调用者作用域?
我有这个例子:
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 );
}
}
最佳答案
如果您使用 Prototype library你可以像这样使用 Function#bind() :
var myObject = {
id: 1,
printId: function() {
var myId = function() {
return this.id;
}.bind(this);
console.log(myId());
}
}
也许有点矫枉过正,但如果您广泛使用这样的对象,它可能值得查找。
关于javascript - 获取函数调用者作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964639/