我在对象中有一些原始数据。其中一个属性需要使用其他属性的参数进行计算。
这显然不起作用:
var myObj = {
val1: 3,
val2: 5,
sum: this.val1 + this.val2 //NaN
}
我知道我可以创建一个类然后创建一个实例。在这里完成了:http://jsbin.com/AtaQOPUM/1/edit?js,console,output
但是,有没有办法让我不必这样做?我的对象是大约150行。我必须在构造函数中插入所有内容,然后复制该对象。它将是300行而不是150行。
有什么想法吗?
答案 0 :(得分:1)
在JavaScript中,您无法访问自身内部的对象。如果您不想实例化它,则需要稍后直接添加该属性:
var myObj = {
val1: 3,
val2: 5,
}
myObj.sum = myObj.val1 + myObj.val2 // = 8
答案 1 :(得分:0)
我只需要创建一个附加所需参数的函数:
var Append = function(obj) { obj.sum = obj.a + obj.b; return obj }
var myObj = Append({ a:1, b: 2});
答案 2 :(得分:0)
作为对象的功能可能更适合您的需求:
function myObj() {
this.val1 = 3;
this.val2 = 5;
this.sum = this.val1+this.val2;
}
var newsum = new myObj();
console.log(newsum.sum);
答案 3 :(得分:-1)
问题在于
中的this
var myObj = {
val1: 3,
val2: 5,
sum: this.val1 + this.val2 //NaN
}
不是对象本身,而是窗口(使用控制台检查)
您必须在对象创建之外执行初始化:
var myObj = {
val1: 3,
val2: 5
};
myObj.sum = myObj.val1 + myObj.val2;
修改强> 忽略下面的内容,我在测试期间不小心在控制台中设置了对象。 而是使用对象名称本身: var myObj = { val1:3, val2:5, sum:myObj [“val1”] + myObj [“val2”] // 8 }