开始使用JavaScript中的已配置对象进行游戏,这引起了我一些问题。
查看以下代码:
function Monster() {
}
function Animal() {
Object.defineProperty(this, "name", {
set: function(n) { },
get: function() { return "Jim"; } // hard-coded to demonstrate problem
});
}
Monster.prototype = new Animal();
var monster = new Monster();
monster.name = "John";
monster.name // Still returns Jim. I need to assign the property to THIS object, so Jim is shadowed by John.
正如评论所说,这是输出“ Jim”,因为吸气剂被硬编码返回。
我不想每次调用Monster.name时都更改其原型-我想要在我的Monster实例上添加一个新的阴影属性。我该如何处理?
最佳答案
使属性可配置:
function Animal() {
Object.defineProperty(this, "name", {
configurable: true,
set: function(n) { },
get: function() { return "Jim"; } // hard-coded to demonstrate problem
});
}
Monster.prototype = new Animal();
var monster = new Monster();
Object.defineProperty(monster, 'name', {writable: true})
monster.name = "John";
monster.name
关于javascript - 配置属性阴影,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17264268/