开始使用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/

10-11 23:33