我现在已经写了一段时间的咖啡,并且碰到了一些特别的东西。
传统上,coffeescript单独声明所有原型方法:
MyClass.prototype.firstMethod = function(){...};
MyClass.prototype.secondMethod = function(){...};
然而,MDN表示更好的方法是:
(function() {
this.firstMethod = function(){...};
this.secondMethod = function(){...};
}).call(MyClass.prototype);
有关来源,请参阅this page的最后一个示例。
我的印象是coffeescript试图渲染最好的javascript。一种方式真正比另一方更好(或可能不同),还是仅仅是偏好?
感谢阅读!
编辑:似乎这个问题没有真正的答案,而是归结为意见问题。在删除它之前,我将再保留2个小时。我要感谢大家的意见,这有助于我更好地理解这个主题。
答案 0 :(得分:3)
coffeescript transpiler并没有提供最好的"可能的javascript。它只是做它的贡献者想要它做的事情。此外,"最好"在某些情况下是一个意见问题,所以无论如何都会有分歧。
答案 1 :(得分:1)
这可能会因为争论而被关闭,但从我的角度来看,第二个是处理(和封装)范围时的一个很好的选择。您会看到很多IIFE,因此您不会在默认(全局)范围内意外引用this
。在IIFE中,您限制了与其他模块定义冲突的机会。