开始在 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”,因为 getter 是硬编码返回的。
我不想每次调用 monster.name 时都更改我的原型——我想在我的怪物实例上添加一个新的阴影属性。我该如何管理?