-1

これは私がプロトタイプを整理しようとする方法です:

ただし、プロトタイプの関数にアクセスするには、追加の「メソッド」プロパティを作成する必要がありますが、かなり非効率的です。

var Gallery = function(name) {
    this.name = name;
}

Gallery.prototype.methods = {
    activeCnt: 0,
    inc: function() {
        this.activeCnt++;
    },
    dec: function() {
        this.activeCnt--;
    },
    talk: function() {
        alert(this.activeCnt);
    }
}


var artGallery = new Gallery('art');
var carGallery = new Gallery('car');
artGallery.methods.inc();
artGallery.methods.talk();
carGallery.methods.talk();​
4

1 に答える 1

2

methodsプロパティを削除して、のprototypeオブジェクトに新しいオブジェクトを割り当てるだけですGalleryconstructorまた、を指すというプロパティがあることを確認してGalleryください。コードは次のとおりです。

var Gallery = function (name) {
    this.name = name;
}

Gallery.prototype = {
    activeCnt: 0,
    inc: function() {
        this.activeCnt++;
    },
    dec: function() {
        this.activeCnt--;
    },
    talk: function() {
        alert(this.activeCnt);
    },
    constructor: Gallery
};


var artGallery = new Gallery('art');
var carGallery = new Gallery('car');

artGallery.inc();
artGallery.talk();
carGallery.talk();
于 2012-06-10T07:48:36.027 に答える