让我们定义这个简单的代码:
class Foo
@foo = 'blah'
console.log(@foo)
class Bar extends Foo
constructor: () ->
console.log(@foo)
bar: () ->
console.log(@foo)
b = new Bar
b.bar()
Run Code Online (Sandbox Code Playgroud)
结果是:
blah
undefined
undefined
Run Code Online (Sandbox Code Playgroud)
如何@foo在继承的类中访问?
你其实想写
console.log(@constructor.foo)
Run Code Online (Sandbox Code Playgroud)
在Bar的构造函数.(这里的工作示例.)@constructor指向class(Bar),它继承了静态属性Foo.这些属性不在实例上,这是@构造函数指向的属性.
(是的,它很奇怪,@constructor而不是@class,但那是因为它obj.constructor是一个JavaScript主义,而不是一个特殊的CoffeeScript语法.)
进一步澄清:在课堂上,@指向班级.在构造函数中,@指向实例.因此明显不一致.我在本书" CoffeeScript:Accelerated JavaScript Development"中的类章节中花了很多时间.
| 归档时间: |
|
| 查看次数: |
1632 次 |
| 最近记录: |