因此,在回答本網站的另一個問題時,我寫了一個類來爲某人創建一個JavaScript中的BitArray實例。我發佈的代碼是這樣的:如果該類永遠不會被繼承,JavaScript中的原型真的很重要嗎?
var foo = function(param1) {
this._member = param1;
this.getMember = function() { return this._member; };
this.setMember = function(val) { this._member = val; };
this.alertMember = function() { alert(this._member); };
foo.STATIC_CONSTANT = "some value";
}
一個我收到的意見,是一個相當嚴厲:「你絕對應該添加方法foo.prototype,而不是這個。」如果我對別人的批評,並把它應用到上面,它把代碼變成:
var foo = function(param1) {
this._member = param1;
}
foo.prototype.getMember = function(){ return this._member; };
foo.prototype.setMember = function(val) { this._member = val; };
foo.prototype.alertMember = function() { alert(this._member); };
foo.STATIC_CONSTANT = "some value";
我的問題是,這裏有什麼之間假設富的兩種方法將永遠不會被繼承的區別?爲了清楚起見,我不是在主張編寫草率的代碼 - 我相信評論員的觀點是讓我sl - 不馴 - 但是當我意識到他的正確性時,它確實讓我思考 - 爲什麼我應該原型,創建一個有效密封的課程?
這裏有一些性能或功能性後果嗎?或者當一個類不會被分類時使用原型不相關?
只是澄清:我沒有說「方法不應該在原型之外」,這絕對不是這種情況。有很多有效的用例,你想要在對象實例上有方法,而不是在對象的原型上。 *這不是其中的一個。 –
@Daniel Baulig - 誹謗糾正:) – Brian