Frontend必要になった状況の説明は割愛するのだが、オブジェクトのプロパティの上書きを検知したくなった。}};後からこうされる。}};alpha関数が定義されていることを前提にalpha関数を呼び出しても、未定義でエラーになってしまう。混みいった事情で、後から上書きされることを前提になんとかしないといけなくなった。いうことでwindowオブジェクトのFooプロパティが上書きされるのを検知して、新しいオブジェクトにalpha関数をマージすることにした。検知する方法について、いくつか検討したのでまとめておく。詳しい仕様は上のURLをみてもらいたいが、監視対象のオブジェクトが変更されたときにコールバックが実行される。データバインディングを機能に持つJSフレームワークの開発に関わっている人にとってうれしい仕様だ。今はオブジェクトの変更をハンドリングするためにフレームワークの中の人が苦労している。Vue.jsではsetterを上書きすることで、Angular.jsではdirty-checkingという仕組みで実現している。Opera)でしか実装されていないのとユーザー定義ではないオブジェクト(例えば、windowやdocument)の変更は監視できないのでボツになった。Foo.Bar.alphaのようになっていて、Barが上書きされようとしているとき)は使える。)使い方自体はObject.observeと似ているが、大きく異なる点はコールバックが実行されるタイミングである。Object.observeが変更後にコールバックが実行されるのに対して、Proxyのコールバックはプロパティにアクセスしようとしたときに実行される。これを使うとRubyのmethod_missingを使ったゴーストメソッドと同じことを実現できる。Object.defineProperty最終的にObject.definePropertyで定義できるsetterでハンドリングすることにした。上に書いたVue.jsが変更をハンドリングしている方法と同じである。コードにするとこんなかんじになる。揮発性の現象を扱う(ダイアログ等を実装する)同僚に題の相談を受けていたんですが、そのときに「あんまりこ...2014-11-08AngularJSのカスタムディレクティブのscopeで指定したアクションに引数を渡す術こんにちは。今日はキタソン、きたけーです。クラス名とかメソッド名の頭につけたときの話こんにちは。ジンギスカンキャラメルをたべました、きたけーで...2014-10-08JavaScriptのエラーを検知したり、スタックトレースをいいかんじに表示する術こんにちは。注目記事はてなブログをはじめよう!kitakさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。