次の (coffeescript) 例では、詳細プロパティを持つ Person クラスを取り上げます。このクラスには、独自のプロパティがあります。
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
もちろん、name と age を Person クラスのプロパティとして定義すれば、この問題は回避できますが、これは単なる例です。
プロパティが変更されたときに詳細 set() メソッドを起動させる簡単な方法はありますか?