0

foo1そしてfoo2人から受け継いだ。なぜ とfoo1.a同じfoo2.aですか?

    var foo1, foo2;

    var person = function(a) {
        this.a = []
        this.b = 1;
        console.log('construct 1');
    }

    var kevin = function(a, b) {
        console.log('construct 2');
    }

    kevin.prototype = new person();

    foo1 = new kevin();
    foo2 = new kevin();

    foo1.a[3] = true;
    foo1.a[1] = true;
    foo2.a[1] = false;
    foo1.b = 2;
    foo2.b = 3;
    console.log(foo1.a);
    console.log(foo1.b);
    console.log(foo2.a);
    console.log(foo2.b);

なぜfoo*.a共有されるのですか?なぜfoo*.b共有されないのですか?

4

2 に答える 2

0

試す:

function kevin( a, b ){
    Person.call( this, a );
    this.b = b;
    //do extra kevin stuff here...

}

スーパーコンストラクターを呼び出す必要があります。おそらく、この記事では、継承を実装する方法についてもいくつかのアイデアを提供します。

于 2012-11-22T09:18:41.447 に答える