0

編集済み:コンストラクターを作成して、独自のユーザー定義オブジェクトを作成するとします。

var Person = Person(age) { this._age = living; };

ランタイム中に、このコンストラクターによって作成されたオブジェクトに別のプロパティを追加する必要があることがわかったので、これを使用してプロパティをプロトタイプに追加します。

Person.prototype.alive;

現在、私の唯一のコンストラクターは 1 つの val しか取得できません。同じコンストラクターに別の val を送信することは可能ですか? var newPerson = Person(20,''yes); のように言います。

4

2 に答える 2

0

同じコンストラクターに別の値を送信することは可能ですか? のようなことを言うvar newPerson = Person(20,'yes');

いいえ。あなたが持っているコンストラクターは1つのパラメーターしか取りません。

ただし、あなたの場合、コンストラクターを再定義できます:

Person = (function (original) {
    function Person(age, alive) {
        original.call(this, age);          // apply constructor
        this.alive = alive;                // set new property from new parameter
    }
    Person.prototype = original.prototype; // reset prototype
    Person.prototype.constructor = Person; // fix constructor property
    return Person;
})(Person);

これより前に作成された古いオブジェクトには、新しい値が自動的に割り当てられることに注意してください。oldPerson.alive = 'no';知っている古いインスタンスごとに明示的に設定する必要があります。

于 2014-04-08T10:36:01.153 に答える