如何让一个javascript对象的成员引用同一个对象的另一个成员?

时间:2013-04-18 18:31:04

标签: javascript jquery object

在javascript中定义对象时,该对象的成员是否有办法访问同一对象的另一个成员的值?例如,如果我定义下面的(使用jquery)

var x = $.extend({}, {
  greeting: 'hello',
  message: this.greeting+' world'
});

alert(x.message);

以上代码会提醒undefined world。如何在定义期间使用greeting的值。在这种情况下,预期输出为hello world

3 个答案:

答案 0 :(得分:8)

您可以使用属性:

var foo = {
    greeting: 'hello',
    get message() {
        return this.greeting+' world'
    }
};

console.log(foo.message);
foo.greeting = 'hi';
console.log(foo.message);

虽然我不确定这些内容会如何与$.extend

互动

在较旧的浏览器中,您可以始终只使message成为函数,而不是属性getter

答案 1 :(得分:2)

尝试这种方式:

var x = $.extend({}, {
  greeting: 'hello',
  message: function(){
     return this.greeting+' world';
  }
});

alert(x.message);

答案 2 :(得分:0)

您可以创建一些Constructor功能。在此函数中将定义this.greeting

var Constructor = function () {
   this.greeting = 'hello',
   this.message = this.greeting + ' world'
   return this;
};

然后使用Constructor

的实例扩展您的对象
var x = $.extend({}, new Constructor());