为什么咖啡脚本创建此闭包
Why is coffescript creating this closure
我正在学习CoffeeScript,我有这段代码:
class Person
constructor: (@firstName, @lastName) ->
sayHi: () ->
return "Hi, I'm #{@firstName} #{@lastName}"
并且正在生成以下JavaScript代码:
// Generated by CoffeeScript 1.10.0
(function() {
var Person;
Person = (function() {
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Person.prototype.sayHi = function() {
return "Hi, I'm " + this.firstName + " " + this.lastName;
};
return Person;
})();
}).call(this);
我想创建该class
的实例,但由于它在闭包内,我不能怎么做?
一个稍微不那么黑客的选项是@
运算符(与this
相同)。在浏览器环境中,this
会指向window
,在node.js
中,它会指向exports
。
class @Person
constructor: (@firstName, @lastName) ->
sayHi: () ->
return "Hi, I'm #{@firstName} #{@lastName}"
window.Person
仅适用于浏览器,@
将适用于节点和浏览器。请参阅 https://stackoverflow.com/a/24352630/227299
或者,您可以使用 -b
(--bare)
选项运行 coffescript,并且不会创建包装函数。
更改类的位声明
class window.Person
constructor: (@firstName, @lastName) ->
sayHi: () ->
return "Hi, I'm #{@firstName} #{@lastName}"
相关文章:
- 使用闭包创建原型中引用的私有属性
- 如何使用继承创建类似谷歌闭包的结构
- 为什么需要在这个闭包中创建一个变量
- 是否可以在Javascript中创建外部闭包
- React js:为什么我无法创建闭包
- Javascript:是为所有变量创建的闭包,还是只为内部函数可能使用的变量创建的闭包
- 在闭包上创建多个元素的列表器
- 创建带有回调的动态 JSON 数组(内部闭包问题)
- 为什么咖啡脚本创建此闭包
- 我们是否可以使用谷歌闭包创建一个带有复选框和组合框的对话框
- 闭包可以使用new关键字和区别,例如,在创建新对象/类时
- 在javascript中,当原型继承比闭包更适合创建对象时
- 使用闭包创建的私有函数如何访问构造函数中定义的变量
- 无法创建闭包中定义的函数的对象
- 在for循环中创建闭包——我这样做对吗
- ES2015导出的类是否创建了一个闭包
- 参数变量在JavaScript中创建闭包
- 创建类时的闭包不起作用
- 正在创建可访问闭包的装饰器
- 如何附加到从闭包创建的JavaScript命名空间