素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

getter、setterとwatch

var foo = {
    _test: null,
    get test() this._test,
    set test(val) this._test = val
};

というコードを実行し、

foo.watch("test",
  function(id, bef, aft) {
    console.log("change");
    return aft;
  });

という風に、foo.testをwatchするコードを実行し、

foo.test = 42;

を実行すると、foo.test自体を変更していないにもかかわらず、foo.testへの代入(実際にはsetterの呼び出し)に反応して、consoleに"change"と表示される。

なので、location.hashのjavascriptによる変更をwatchする時とかに、setterだからどうとか考えなくても平気。