我正在尝试根据对象cube
的l,w,h属性计算基本体积,该对象是item
中的对象。
var item = new Object();
item["cube"] = {
dimensions: [1.00,2.00,1.50, "in"], // l, w, h, unit (inches)
volume: (this.dimensions[0] * this.dimensions[1] * this.dimensions[2]) // V = l * w * h
};
alert( item["cube"].volume + item["cube"].dimensions[3] ); // Volume + unit (inches)
我还尝试在计算体积时不使用this
,而是指定对象的确切部分:item["cube"][dimensions][0] * item["cube"][dimensions][1] * item["cube"][dimensions][2]
。
目标是获取警报3.00in
或3in
。关于我做错了什么,甚至可以解决的任何建议?我可以在对象中放置函数吗?
编辑:添加了实际功能:
var item = new Object();
function calcVolume (l,w,h) {
return l * w * h;
};
item["cube"] = {
dimensions: [1.00,2.00,1.50, "in"], // l, w, h, unit (inches)
volume: calcVolume(this.dimensions[0],this.dimensions[1],this.dimensions[2]) // V = l * w * h
};
alert( item["cube"].volume + item["cube"].dimensions[3] ); // Volume + unit (inches)
答案 0 :(得分:3)
您可以为此使用getter
。
var item = new Object();
function calcVolume (l,w,h) { return l * w * h;};
item["cube"] = {
dimensions: [1.00,2.00,1.50, "in"], // l, w, h, unit (inches)
get volume() { return calcVolume(this.dimensions[0],this.dimensions[1],this.dimensions[2]) }
};
alert( item["cube"].volume + item["cube"].dimensions[3] ); // Volume + unit (inches)
尽管我认为这将是ES6 Classes的一个很好的例子:
class Cube {
constructor(l, w, h, unit) {
this.l = l;
this.w = w;
this.h = h;
this.unit = unit || "in";
}
get volume() { return this.l * this.w * this.h };
get volumeAsString() { return this.volume + this.unit };
}
var c = new Cube(1.00, 2.00, 1.50);
console.log(c.volumeAsString);
答案 1 :(得分:2)
在函数中使用this
:
var item = {
"cube": {
dimensions: [1.00, 2.00, 1.50, "in"],
volume: function () { return this.dimensions[0] * this.dimensions[1] * this.dimensions[2]; }
}
};
alert( item["cube"].volume() + item["cube"].dimensions[3] );