0
[更新] 我的問題可能還不夠清楚...... 的,我想怎樣進一步澄清做到:有兩個object.property和object.property.method()提供的CoffeeScript
我找回對象像這樣的:
p =
name:
first: 'alan'
last: 'smith'
,並希望建立一個結構(一類,多類?)要能寫出這樣的事情最終:
person.name # alan smith
person.name.toCap() #Alan Smith
person.name.first # alan
person.name.first.toCap() # Alan
person.name.last # smith
person.name.last.toCap() # Smith
...
so:
- 有沒有辦法同時擁有person.name和person.name.first?
- 有沒有更好的方法來擴展對象屬性的方法,而不是像字符串那樣擴展本機類型?
[原創]
尋找咖啡這樣做的正確方法:
console.log person.name.last #smith
console.log person.name.last.capitalize() # SMITH
console.log person.name.last.initial() # S
我想出了以下的解決方案,但希望確保這是要走的路...
String::toCap = (remainingToLower=false) ->
@[0].toUpperCase() + if remainingToLower then @[1..-1].toLowerCase()
else @[1..-1]
Number::random = (percent) ->
offset = @ * percent/100
parseInt(Math.floor(Math.random() * 2 * offset) + @ - offset)
class Name
constructor: (@first, @last) ->
class Person
constructor: (@name, @age) ->
toString:() => "#{@name.first.toCap(true)} #{@name.last.toCap(true)}
(#{@age.random(25)})"
# GO --------------------------->
p = new Person(new Name, 18)
p.name.first = 'alaN'
p.name.last = 'smith'
console.log "#{p.toString()}"
感謝您的反饋ACK。