我正在阅读spine.js文档,我想知道一些关于函数声明的内容.在我总是阅读的文档中
constructor: ->
super
....
Run Code Online (Sandbox Code Playgroud)
但除此之外我总是读
constructor = ->
super
....
Run Code Online (Sandbox Code Playgroud)
那么:和=等于函数声明?
没有.
在定义一个类时,其:工作方式与其他地方的工作方式略有不同.在类定义中,:将此函数作为方法放在原型(实例方法)上的方法. constructor:是一个用于构造函数的特例.
如果你看一下编译好的javascript,差别很明显.
class Foo
constructor: -> @foo = 'foo'
method: ->
Run Code Online (Sandbox Code Playgroud)
汇编到这(好!)
var Foo;
Foo = (function() {
function Foo() {
this.foo = 'foo';
}
Foo.prototype.method = function() {};
return Foo;
})();
Run Code Online (Sandbox Code Playgroud)
您可以看到构造函数是构造函数,方法在原型上.
但是,当您使用时=,只需分配局部变量,并且函数实际上不是构造函数或原型的类的一部分:
class Bar
constructor = -> @bar = 'bar'
method = ->
Run Code Online (Sandbox Code Playgroud)
编译到这个(不好!)
var Bar;
Bar = (function() {
var constructor, method;
function Bar() {}
constructor = function() {
return this.bar = 'bar';
};
method = function() {};
return Bar;
})();
Run Code Online (Sandbox Code Playgroud)
通过简单地查看编译结果,可以发现或解决许多关于咖啡脚本语法的问题.这也是为什么我不建议在不知道JavaScript的情况下学习咖啡脚本的原因,因为如果你不知道它编写的内容,它所做的一些事情真的没有意义.
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |