【问题标题】:Can I reference the name of a property from an object in an other?我可以从另一个对象中引用一个属性的名称吗?
【发布时间】:2015-07-22 09:46:50
【问题描述】:

我有以下物品:

var Foo = {
    propertyA: {
        subPropertyA : 10,
        subPropertyB : 'ABC'
    },
    propertyB: 'ABC'
}

var Bar = {
    propertyBar: 'propertyA'
}

但我想通过引用Foo 来设置propertyBar。类似的东西:

var Bar = {
    propertyBar:  Foo.propertyA.getKeyName()  // don't pay attention to syntax
}

如果我在Foo 中更新propertyA 的名称,propertyBar 的值也会更新。

有可能吗?

【问题讨论】:

  • 更新属性名称是什么意思?
  • @KingMob 好吧,如果 'Foo' 变成 Foo { newPropertyA: /* ...*/ } 之类的东西,那么 Bar.propertyBar 应该设置为 newPropertyA
  • 写一个函数来改变Foo和Bar?目前尚不清楚您要实现的目标。您怎么知道newPropertyA 不仅仅是一个新属性?如果您描述更大的图景,也许会有所帮助。

标签: javascript object properties


【解决方案1】:

您需要在类似这样的“Bar.propertyBar”中保留Foo.propertyA 的引用

var Bar = {
    propertyBar: Foo.propertyA
}

你可以像Bar.propertyBar.subPropertyA一样访问它

【讨论】:

  • popertyBar 应该设置为“propertyA”(字符串),而不是整个对象,只有键。
【解决方案2】:

您需要在类似这样的“Bar.propertyBar”中保留Foo.propertyA 的引用

var Bar = {
    propertyBar: Foo.propertyA
}

你可以像Bar.propertyBar.subPropertyA一样访问它

如果你不想保留对象,那么另一种方法是使用'defineProperty'

var Foo = {
    propertyA: {
        subPropertyA : 10,
        subPropertyB : 'ABC'
    },
    propertyB: 'ABC'
}
var Bar = {};
Object.defineProperty(Bar, "propertyBar", { get: function () { return Foo.propertyA.subPropertyA ; } });

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 2011-03-09
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多