我一直在写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