0

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 インスタンスに新しいシャドウ プロパティが必要です。どうすればそれを管理できますか?

4

3 に答える 3

0

プロパティを構成可能にします。

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
于 2013-06-23T20:50:25.667 に答える