javascript - 如何在对象的另一个键中使用一个键的值?

标签 javascript arrays this

这个问题看起来很困惑,所以让我解释一下:

我正在处理这段代码:

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-undefinedNaN

您甚至可以通过定义 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/

相关文章:

arrays - $SGE_TASK_ID 未通过 qsub 数组网格作业进行设置

python - numpy - 不同维度的numpy数组的求和

javascript - 在 JavaScript 中将方法作为参数传递

javascript - 在 Wirecloud 中使用 jQuery 给出 "Uncaught ReferenceError: jQuery is not defined"

javascript - AngularJS 无法使用工厂在 Controller 之间共享数据

c - ‘unary *’ 的类型参数无效(有 ‘int’ )

javascript - jQuery - 在函数调用中使用当前对象

javascript - 使用 'this' 关键字时数组的长度不同

javascript - Yeoman 在模板中循环

javascript - 是否可以在javascript中取消打印