2
以一個Person類與具體屬性,又具有其自身的屬性以下(CoffeeScript的)例如:的Javascript Object.defineProperty設置方法觸發屬性更改
class Person
constructor: ->
details =
name: ''
age: 0
Object.defineProperty this, 'details',
enumerable: yes
get: => details
set: (value) =>
console.log 'set details:', value
details = value
p = new Person
# does NOT trigger details set()
p.details.name = 'Simon'
# DOES trigger details set(), but takes a bit of effort...
details = p.details
details.name = 'Someone else'
p.details = details
很顯然,如果我只需將名稱和年齡定義爲Person類的屬性即可避免此問題,但這僅僅是一個示例。
有什麼簡單的方法讓我的細節set()方法在其屬性發生更改時觸發?