◆ 普通にJavaScriptでプロパティを作るだけ

すでにあるページの動きを確かめたいとか そのページの機能でDOMを消して別のに置き換えるなどの操作の時に なにか処理を加えたいとかあります たまに

jQueryなどを使っていても内部ではDOMのメソッドを直接呼ぶことになるので DOMのメソッドを書き換えてしまえば絶対にそのタイミングで実行されます
ただし 書き換える時に本来の動作をさせるのなら 自分で本来のメソッドを呼ばないとダメです

要素の削除時に何かしたい場合
var elem = document.getElementById("test") elem.remove = function(){ /* 削除前にするコード */ // 削除(本来の動作)を実行する elem.__proto__.remove.call(this) /* 削除後に実行するコード */ }

こんな風にかけます

この場合は1つの要素に対してだけですが すべてのdivタグにしたいとなれば HTMLDivElement prototypeに対してつければいいです
上の例では elem.__proto__.remove call するだけで本来のメソッドを実行できてますが これはプロトタイプチェーンが HTMLDivElement → HTMLElement → Element になっていて removeメソッドElement に本体があるからこういう風にかけています
全タグするにしても HTMLElement で良さそうですが もし Element に対して remove の書き換えをする場合は remove_remove に退避させておかないと本来のメソッドを呼べなくなってしまうので注意です


removeメソッドを上書きした簡単なサンプルです
そのまま削除ボタンを押すとただブロックが消されるだけですが 一番下にあるボタン押したあとはブロック1を消す時に確認画面が出るようになります
http://var.blog.jp/s/dom-method-overwrite.html

削除ボタンを押したときの処理にフラグ見るとかはなくremoveメソッドを呼んでいるだけです
そして removeメソッドを書き換えることで本来の処理に何らかを処理を付け加えることができてます

特定のページでスクリプトを実行する拡張機能として作るときには有用そうです