以下是我的一些javascript代码:
var screenWidth = 1280;
var screenHeight = 720;
var shapeComtainer = {
name : "bender",
offsetX : 100,
offsetY : 100,
width : screenWidth - 2*offsetX,
height : screenHeight - 2*offsetY,
};
我收到错误offsetX和offsetY未定义。这是我计算宽度和高度的行。问题是我的宽度和高度取决于同一对象内的其他变量。
是否有更好/更正的方法来使用表示偏移量和大小信息等信息的javascript对象?
答案 0 :(得分:4)
从错误消息中已经很明显,这是不可能的。但是,您可以执行以下操作:
var shapeContainer = {
name : "bender",
offsetX : 100,
offsetY : 100,
getwidth : function() { return screenWidth - 2 * this.offsetX },
getheight : function() { return screenHeight - 2 * this.offsetY },
};
答案 1 :(得分:2)
作为Xander回答的补充:也可以只使用一个包裹整个对象的函数。
var shapeContainer = new function() {
this.name = "bender";
// ...
this.width = screenWidth - 2 * this.offsetX;
};
答案 2 :(得分:1)
因为到目前为止还没有人提到它,这也是ECMAscript5的getter
功能的一个主要例子:
var defProps = Object.defineProperties;
var shapeComtainer = {
name : "bender",
offsetX : 100,
offsetY : 100
};
defProps(shapeComtainer, {
width: {
get: function(){ return screenWidth - 2*this.offsetX; }
},
height: {
get: function(){ return screenHeight - 2*this.offsetY; }
}
});
然后您可以像访问它一样访问它:
shapeComtainer.height;
答案 3 :(得分:-1)
您必须使用shapeComtainer.offsetX
和shapeComtainer.offsetY