rye*_*guy 7 javascript coffeescript
鉴于以下coffeescript代码:
class Animal
constructor: (@name) ->
speak: (things) -> "My name is #{@name} and I like #{things}"
Run Code Online (Sandbox Code Playgroud)
这是生成的:
var Animal = (function() {
function Animal(name) {
this.name = name;
}
Animal.prototype.speak = function(things) {
return "My name is " + this.name + " and I like " + things;
};
return Animal;
})();
Run Code Online (Sandbox Code Playgroud)
但为什么不是这个更惯用的代码生成?
var Animal = function Animal(name) {
this.name = name;
};
Animal.prototype.speak = function(things) {
return "My name is " + this.name + " and I like " + things;
};
Run Code Online (Sandbox Code Playgroud)
我知道coffeescript在匿名函数中包含很多东西来控制范围泄漏,但是这里可能会泄漏什么?
jas*_*nas 12
生成的代码可以在Internet Explorer中可靠地具有命名功能.(在本例中,"Animal".)如果您只是在顶级作用域中使用命名函数,它将与var Animal =可能存在的任何声明冲突...即使在较低的作用域中,也会阻止它们被正确引用.要解决IE错误,我们在类定义中包含函数包装器.