Javascript 获取函数内部的祖父母上下文
有人知道一种更优雅的方式来访问函数中父对象的父对象吗Javascript 获取函数内部的祖父母上下文,javascript,Javascript,有人知道一种更优雅的方式来访问函数中父对象的父对象吗 var obj = { subobj : { func1 : function() { // here 'this' will refer to window // i want to access obj instead } } }; var obj = { func1 : function() { // i know
var obj = {
subobj : {
func1 : function() {
// here 'this' will refer to window
// i want to access obj instead
}
}
};
var obj = {
func1 : function() {
// i know 'this' here will refer to bj
}
}
我也试过了
var obj = {
subobj : {
func1 : function() {
// even 'this' will refer to window
}.bind(this)
}
}
但即使在这个绑定示例中,“this”也会指窗口,因为它在外部
我能行
var _this = obj;
在func1内部,但我不想使用这个丑陋的把戏
我基本上希望在func1中获取obj上下文,或者将obj上下文添加到subbj。
我现在想不出什么,你们有什么建议吗
首先谢谢你。您实际上不需要处理上下文,因为您已经可以从函数
func1
中访问obj
var obj = {
subobj : {
func1 : function() {
//use `obj` here
console.log(obj);
}
}
};
或者,如果您出于某种原因希望像这样访问obj。执行以下操作
var obj = {
subobj : {
func1 : function() {
//this is now obj here. Go suffer maintainer!
}.bind(obj);
}
};
首先。您实际上不需要处理上下文,因为您已经可以从函数
func1
中访问obj
var obj = {
subobj : {
func1 : function() {
//use `obj` here
console.log(obj);
}
}
};
或者,如果您出于某种原因希望像这样访问obj。执行以下操作
var obj = {
subobj : {
func1 : function() {
//this is now obj here. Go suffer maintainer!
}.bind(obj);
}
};
您可以在函数
func1
中访问obj
。它已经在闭包内捕获。你为什么要搞乱上下文?只需使用function(){console.log(obj);}
是的,我提到过直接obj访问,但如果我将来将obj更改为obj2,我将必须检查它在自身内部使用的位置,并在那里进行更改。“…但如果我将来将obj更改为obj2,我将必须检查它在自身内部使用的位置,并在那里进行更改。”这就是为什么要使用支持重构的IDE来重命名变量!那么您想将subobj
移动到另一个obj,并使您的函数自动使用新的根作为上下文?如果未来的维护者不知怎么知道你住在哪里呢?:)我通常会对我的工作进行注释,这样就不会成为将来维护的问题,但我同意您的观点,即在变量中保存obj更具声明性。您可以在函数func1
中访问obj
。它已经在闭包内捕获。你为什么要搞乱上下文?只需使用function(){console.log(obj);}
是的,我提到过直接obj访问,但如果我将来将obj更改为obj2,我将必须检查它在自身内部使用的位置,并在那里进行更改。“…但如果我将来将obj更改为obj2,我将必须检查它在自身内部使用的位置,并在那里进行更改。”这就是为什么要使用支持重构的IDE来重命名变量!那么您想将subobj
移动到另一个obj,并使您的函数自动使用新的根作为上下文?如果未来的维护者不知怎么知道你住在哪里呢?:)我通常会对我的工作进行评论,这样就不会成为未来维护的问题,但我确实同意您的观点,即在变量中保存obj更具声明性。我正在尝试构建松散耦合的模块。访问模块(在本例中为“obj”)是我所需要的,从那里我可以去任何地方,访问模块内的任何内容。反正是Thnx!我正在尝试构建松散耦合的模块。访问模块(在本例中为“obj”)是我所需要的,从那里我可以去任何地方,访问模块内的任何内容。反正是Thnx!