使用 Object.defineProperty() 方法将 getter 和 setter 添加到已存在的对象时出错
Getting an error while using Object.defineProperty() method to add getters and setters to an already existing object
错误:未捕获类型错误属性描述必须是一个对象:h
使用 Object.defineProperty() 方法将 setter 和 getter 添加到现有对象以修改对象中 属性 的值时出现上述错误。
const jump = {
height: "10:00mtr",
time: "10seconds",
}
//adding a setters and getters to height.
Object.defineProperties(jump, "height2", {
get: function () {
return this.height;
},
set: function (newHeight) {
return this.height = newHeight;
},
});
//adding a setters and getters to time.
Object.defineProperties(jump, "time2", {
get: function () {
return this.time;
},
set: function (newTime) {
return this.time = newTime;
}
});
您使用的这种特殊语法是为 Object.defineProperty
而不是 Object.defineProperties
保留的。你唯一的错误是在你应该使用 Object.defineProperty
.
的地方使用 Object.defineProperties
即使在你的问题标题中你询问了 Object.defineProperty
但你仍然在下面的代码中使用 Object.defineProperties
。
更正后的代码:
Object.defineProperty(jump, "height2", {
get: function () {
return this.height;
},
set: function (newHeight) {
return this.height = newHeight;
},
});
另一方面,Object.defineProperties
用于一次定义多个属性,应该这样使用:
Object.defineProperties(jump,
{
"height2":
{
get: function () {
return this.height;
},
set: function (newHeight) {
return this.height = newHeight;
}
},
"anotherProperty:
{
...
}
});
错误:未捕获类型错误属性描述必须是一个对象:h
使用 Object.defineProperty() 方法将 setter 和 getter 添加到现有对象以修改对象中 属性 的值时出现上述错误。
const jump = {
height: "10:00mtr",
time: "10seconds",
}
//adding a setters and getters to height.
Object.defineProperties(jump, "height2", {
get: function () {
return this.height;
},
set: function (newHeight) {
return this.height = newHeight;
},
});
//adding a setters and getters to time.
Object.defineProperties(jump, "time2", {
get: function () {
return this.time;
},
set: function (newTime) {
return this.time = newTime;
}
});
您使用的这种特殊语法是为 Object.defineProperty
而不是 Object.defineProperties
保留的。你唯一的错误是在你应该使用 Object.defineProperty
.
Object.defineProperties
即使在你的问题标题中你询问了 Object.defineProperty
但你仍然在下面的代码中使用 Object.defineProperties
。
更正后的代码:
Object.defineProperty(jump, "height2", {
get: function () {
return this.height;
},
set: function (newHeight) {
return this.height = newHeight;
},
});
另一方面,Object.defineProperties
用于一次定义多个属性,应该这样使用:
Object.defineProperties(jump,
{
"height2":
{
get: function () {
return this.height;
},
set: function (newHeight) {
return this.height = newHeight;
}
},
"anotherProperty:
{
...
}
});