Текущее свойство объекта как значение в том же объекте другое свойство - PullRequest
1 голос
/ 07 ноября 2011

Извините за такой случайный заголовок, но не знаю, как это объяснить лучше.И поэтому не знаю, является ли это дублирующим вопросом или нет.

Итак, при объявлении нового объекта я рассчитываю вычислить значение giga:

var myObject = {
    super : 1,
    mega : 5,
    uber : 100,
    giga : this.super + this.mega + this.uber // super + mega + uber doesn't cut it either..
};

Ноэто не работает, так что, есть ли какие-либо способы сделать это, когда вы объявили или не можете?

Надеюсь, я дал понять и заранее спасибо!

Ответы [ 3 ]

6 голосов
/ 07 ноября 2011

В Javascript 1.5 вы можете использовать ключевое слово get для определения получателя

var obj = {
    super : 1,
    mega : 5,
    uber : 100,
    get giga() {
        return this.super + this.mega + this.uber;
    }
};

alert(obj.giga) // 106

подробнее об этом http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/

4 голосов
/ 07 ноября 2011

Полагаю, у вас есть действительно веская причина для необходимости сделать это встроенным, иначе такая хитрость не очень хорошая идея.

Вот что я придумал:

var myObject = (function(){
    this.giga = this.super + this.mega + this.uber;
    return this;
}).call({
    super : 1,
    mega : 5,
    uber : 100
});
0 голосов
/ 07 ноября 2011
var myObject = {
    super : 1,
    mega : 5,
    uber : 100
};
myObject.giga = myObject.super + myObject.mega + myObject.uber;
...