这个问题看起来很困惑,所以让我解释一下:
我正在处理这段代码:
sy: 100,
sx: 50,
x: 30,
y: height - this.sy,
我在函数中使用了“y”,但该函数似乎不起作用,所以我使用了 alert(y);它告诉我“v”的值是“NaN”。然后我使用 typeof 运算符测试了“y”,它告诉我它是“数字”类型。我知道数字可以是“数字”类型,但仍然不是数字,所以我意识到问题出在“this.sy”部分。我认为'this'仅用于功能,那么我如何在仍在数组内的同时访问'sy'? (高度已经在数组外定义)
最佳答案
你可以使用 setter/getter :
var o = {sy: 100,
sx: 50,
x: 30,
get y() { return height - this.sy },
};
稍后您可以将其用作普通属性:
height = 10;
o.y //gives -90
您不能在函数外使用 this,因为在函数外它只是一个全局对象。因此,在您的情况下,this.sy
的值是 undefined
并且 100-undefined
是 NaN
。
您甚至可以通过定义 setter 使 y
可设置:
var o = {sy: 100,
sx: 50,
x: 30,
get y() { return height - this.sy },
set y(val) {Object.defineProperty(this, 'y', {value: val})},
};
关于javascript - 如何在对象的另一个键中使用一个键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26576151/