在javascript中定义对象时,该对象的成员是否有办法访问同一对象的另一个成员的值?例如,如果我定义下面的(使用jquery)
var x = $.extend({}, {
greeting: 'hello',
message: this.greeting+' world'
});
alert(x.message);
以上代码会提醒undefined world
。如何在定义期间使用greeting
的值。在这种情况下,预期输出为hello world
。
答案 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());