在函数里面获取祖父上下文的内容
问题描述:
有没有人知道一个更优雅的方式来访问函数内父对象的父对象?在函数里面获取祖父上下文的内容
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)
}
}
但即使在这种结合例如“这个”将是指窗口,因为它是外部。
我可以做
var _this = obj;
内FUNC1但我请勿想用这个丑陋的伎俩。
我基本上想在func1里面获得obj上下文,或者在obobj上添加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);
}
};
+0
我试图构建松散耦合的模块。并且访问模块(在这种情况下是'obj')是我所需要的,从那里我可以去任何地方访问模块内的任何东西。无论如何thnx! –
您可以在函数func1中访问'obj'。它已经被关闭。为什么你需要混淆上下文?简单地使用'function(){console.log(obj);}' –
是的,我已经提到过直接obj访问,但是如果我将obj改为obj2,我将不得不检查它在自身内部的使用并在那里改变。 –
*“...但是如果我将obj改为obj2将来,我将不得不检查它在自身内部使用和改变的地方。”*这就是为什么你使用重构支持变量重命名的IDE! – DaoWen