【发布时间】:2014-06-18 04:31:28
【问题描述】:
我有一个这样创建的 JavaScript 对象:
var outer = {
list: [
{
field1: 111,
field2: 222,
doSomething: function() {
var x =id;
}
},
{
field1: 333,
field2: 444,
doSomething: function() {
var x =id;
}
}
],
id: 0,
};
假设调用列表第一个元素的doSomething()。 在 doSomething() 内部,我可以访问 this.field1,并读取并获取值 111,因为在该上下文中 this 是 doSomething() 方法的对象。 但是,整个列表数组是外部对象的成员。 outer 的另一个成员是 id,它是 list 的兄弟。如何从任何 doSomething() 方法的内部访问外部变量的 id?我唯一能想到的就是使用语法: var x = 外部.id; 但是知道该特定实例的变量名称的方法。
所以我必须创建一个函数来做这些事情,并在该函数中使用分配给对象的临时变量,并在 doSomething() 中引用该变量。
这是最好的方法吗?
[编辑] 我上面提到的我提出的解决方案如下所示:
var outer = {
list: [
{
field1: 111,
field2: 222,
doSomething: function() {
var x =outer.id;
}
},
{
field1: 333,
field2: 444,
doSomething: function() {
var x =outer.id;
}
}
],
id: 0,
};
我试图避免内部对象知道标识符“外部”......但我想这是我们能做的最好的 --- 并且可能已经足够好了。
【问题讨论】:
标签: javascript oop closures