在 javascript 中定义对象时,该对象的成员是否可以访问同一对象的另一个成员的值?例如,如果我定义以下(使用 jquery)
var x = $.extend({}, {
greeting: 'hello',
message: this.greeting+' world'
});
alert(x.message);
上面的代码会提醒undefined world
。我如何使它greeting
在定义期间取值。在这种情况下,预期的输出是hello world
。
在 javascript 中定义对象时,该对象的成员是否可以访问同一对象的另一个成员的值?例如,如果我定义以下(使用 jquery)
var x = $.extend({}, {
greeting: 'hello',
message: this.greeting+' world'
});
alert(x.message);
上面的代码会提醒undefined world
。我如何使它greeting
在定义期间取值。在这种情况下,预期的输出是hello world
。
您可以使用属性:
var foo = {
greeting: 'hello',
get message() {
return this.greeting+' world'
}
};
console.log(foo.message);
foo.greeting = 'hi';
console.log(foo.message);
虽然我不确定这些将如何与$.extend
在较旧的浏览器中,您总是可以只创建message
一个函数,而不是一个属性 getter
试试这个方法:
var x = $.extend({}, {
greeting: 'hello',
message: function(){
return this.greeting+' world';
}
});
alert(x.message);
您可以创建一些Constructor
功能。里面this.greeting
会定义这个函数。
var Constructor = function () {
this.greeting = 'hello',
this.message = this.greeting + ' world'
return this;
};
然后使用以下实例扩展您的对象Constructor
:
var x = $.extend({}, new Constructor());