0

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

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

alert(x.message);

上面的代码会提醒undefined world。我如何使它greeting在定义期间取值。在这种情况下,预期的输出是hello world

4

3 回答 3

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

于 2013-04-18T18:35:09.823 回答
2

试试这个方法:

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

alert(x.message);
于 2013-04-18T18:36:10.907 回答
0

您可以创建一些Constructor功能。里面this.greeting会定义这个函数。

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

然后使用以下实例扩展您的对象Constructor

var x = $.extend({}, new Constructor());
于 2013-04-18T18:40:47.077 回答