我一直在寫coffeescript一段時間,並遇到了一些奇怪的東西。這兩種聲明原型方法的方式有什麼區別?
傳統CoffeeScript的單獨聲明所有原型方法,如這樣的:
MyClass.prototype.firstMethod = function(){...};
MyClass.prototype.secondMethod = function(){...};
然而,MDN說,更好的辦法是這樣:
(function() {
this.firstMethod = function(){...};
this.secondMethod = function(){...};
}).call(MyClass.prototype);
對於源請參閱盡頭this page的示例。
我的印象是,咖啡標記試圖呈現最好的JavaScript。一種方式是否真的比另一種更好(或者可能不同)?還是僅僅是偏好?
感謝您的閱讀!
編輯:似乎這個問題沒有真正的答案,並歸結爲意見的問題。在刪除它之前,我會再保留它2個小時。我想感謝每個人的意見,這有助於我更好地理解這個話題。
我想有一個改進可以更容易地將相同的方法添加到多個類中,比如'function add_methods(MyClass){這裏的第二個代碼塊}'。 –
MDN並沒有說第二個*更好*,他們說它是*更清晰*:「上面的代碼也可以用更清晰的方式寫出來,結果相同。」 –
@ muistooshort你在技術上是正確的。你建議MDN建議它偏好並沒有其他影響。清潔工可能會更好,但這是主觀的。我想如果沒有人能提供使用其中一種的實際獨家利益,我希望得到普遍的一致意見。 – user3669257