Javascript并从另一个引用一个名称空间属性

时间:2013-01-27 23:49:31

标签: javascript namespaces

  

可能重复:
  How can a Javascript object refer to values in itself?

让我说我有:

var myNamespace = {
      _prop1: 'hello',
      _prop2: _prop1 + ' you!'
};

我现在才发现加载时_prop2会出错。

我无法理解为什么这不起作用,我已经在我的代码中解决了这个问题,但我仍然希望理解。

3 个答案:

答案 0 :(得分:3)

当您尝试设置prop2时,对象尚未初始化,因此prop1和mynamespace的值都未定义。

有几种方法可以实现你想要的,一种方法是将prop2创建为一个函数,这样它就可以动态获取prop1的值

var myNamespace = {
      _prop1: 'hello',
      _prop2: function(){ return this._prop1 + ' you!' }
};

另一种方法是在myNamespace初始化之后设置prop2

答案 1 :(得分:1)

你必须使用它:

var myNamespace = {
    _prop1: 'hello'
};
myNamespace._prop2: myNamespace._prop1 + ' you!';

答案 2 :(得分:0)

嗯,你可以做到

var myNamespace = {
      _prop1: 'hello',
      _prop2: myNamespace._prop1 + ' you!'
};

我认为不可能在声明中以任何其他方式执行此操作(例如:使用“self”或“this”不起作用)