Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当前对象属性作为同一对象不同属性中的值_Javascript_Object_Properties_Dynamic - Fatal编程技术网

Javascript 当前对象属性作为同一对象不同属性中的值

Javascript 当前对象属性作为同一对象不同属性中的值,javascript,object,properties,dynamic,Javascript,Object,Properties,Dynamic,很抱歉这样一个随机的标题,但我不知道如何更好地解释它。因此,不知道这是否是一个重复的问题 因此,在声明新对象时,我希望计算giga值: var myObject = { super : 1, mega : 5, uber : 100, giga : this.super + this.mega + this.uber // super + mega + uber doesn't cut it either.. }; 但是这不起作用,所以,在声明时有什么方法可以做

很抱歉这样一个随机的标题,但我不知道如何更好地解释它。因此,不知道这是否是一个重复的问题

因此,在声明新对象时,我希望计算
giga
值:

var myObject = {
    super : 1,
    mega : 5,
    uber : 100,
    giga : this.super + this.mega + this.uber // super + mega + uber doesn't cut it either..
};
但是这不起作用,所以,在声明时有什么方法可以做到这一点,还是不可能


希望我已经说清楚了,并提前表示感谢

我想您有一个非常好的理由需要进行内联操作,否则 耍花招不是个好主意

以下是我的想法:

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

我想你有一个很好的理由需要做这个内联的,否则这样的 耍花招不是个好主意

以下是我的想法:

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

在JavaScript1.5中,可以使用
get
关键字定义getter

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

alert(obj.giga) // 106

在Javascript 1.5中,您可以使用
get
关键字定义getter

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

alert(obj.giga) // 106

更多关于这一点的信息

在非ES5浏览器上完全可以看到的可能的重复。请使用
Object.defineProperty
来定义getter/setter。无论我对ES5、ES4还是ESx感兴趣,都没有任何规范,我认为没有理由投反对票。事实上,这是迄今为止最清晰的答案。这将完全适用于非ES5浏览器。请使用
Object.defineProperty
来定义getter/setter。无论我对ES5、ES4还是ESx感兴趣,都没有任何规范,我认为没有理由投反对票。事实上,这是迄今为止最清晰的答案。后面有一个逗号,我在复制粘贴时也有:P@Esailija为什么复制粘贴失败?我不明白这个问题。我的意思是我和你有相同的错误,因为我复制粘贴了OP的消息,所以我认为你也这样做了。有一个尾随逗号,我在复制粘贴时也有:P@Esailija为什么复制粘贴失败?我不明白这个问题。我的意思是我和你有同样的错误,因为我复制粘贴了OP的消息,所以我认为你也这样做了。