5

我在javascript中有一个像这样的嵌套对象:

{
nameRoot: "my object",
sub: {
  nameSub: "my sub object"
}
}

我想从 sub 中定义的函数访问 nameRoot。

使用一个函数,我会定义如下:

var self = this;

并使用了 self 但我怎样才能在文字对象中做到这一点?

4

2 回答 2

2

以下代码允许您链接到父元素并避免父元素出现在 for-in 循环中。

var parent = { a: 1 };
var child = { b: 2 };

Object.defineProperty(
    child, 'parent', 
    { value: parent, 
      enumerable: false }
);

parent.child = child;

child.performAction = function() {
    console.log(this.parent.a) // 1
}
于 2012-08-29T15:03:32.987 回答
0

因此,最好的方法是使用函数范围。

function myFunc(){
   this.nameRoot = "my object";
}

那么您可以执行以下操作:

var func = new myFunc();
func.sub = new myFunc();
func.sub.nameRoot = "my sub object";

显然有更聪明的方法可以做到这一点(例如通过函数参数传递名称),但这是一般模式。

于 2012-08-29T14:48:26.897 回答