rai*_*rai 5 javascript coffeescript
这是我正在尝试做的一个例子.
User = (name,dob,rank,score) ->
{
name: name
dob: dob
details: {
rank: rank
score:score
}
basicInfo: -> return "Name: #{@name} - Dob: #{@dob} - #{@details.rank} "
detailedInfo: -> return "Name: #{@name} - Rank: #{@details.rank} - Score: #{@details.score}"
}
User::displayName = ->
console.log @name
bob = new User("Bob","10/12/69",1,100000)
bob.displayName()
Run Code Online (Sandbox Code Playgroud)
我收到一条错误,上面写着"未捕获的TypeError:对象#没有方法'displayName'"
不确定为什么我收到这个错误.任何帮助是极大的赞赏.
当您从构造函数返回一个新对象时,它不共享原型。正确的构造函数将属性/方法添加到this:
User = (name,dob,rank,score) ->
@name = name
@dob = dob
@details =
rank: rank
score: score
@basicInfo = -> return "Name: #{@name} - Dob: #{@dob} - #{@details.rank} "
@detailedInfo = -> return "Name: #{@name} - Rank: #{@details.rank} - Score: #{@details.score}"
Run Code Online (Sandbox Code Playgroud)
您可能想利用 CoffeeScript 的class抽象,它只生成标准构造函数:
class User
constructor: (name, dob, rank, score) ->
@name = name
@dob = dob
@details:
rank: rank
score: score
basicInfo: ->
return "Name: #{@name} - Dob: #{@dob} - #{@details.rank} "
detailedInfo: ->
return "Name: #{@name} - Rank: #{@details.rank} - Score: #{@details.score}"
Run Code Online (Sandbox Code Playgroud)
这在功能上与上面相同,除了 和basicInfoheredetailedInfo已经在prototype它们应该在的位置。有了这个,User::displayName = -> console.log @name应该可以正常工作。
请参阅http://coffeescript.org/#classes
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |