JavaScriptのゲッタ
JavaScriptでゲッタを定義するのにdefineGetterっていうのが使えて
var obj = {};
obj.__defineGetter__('hoge', function() {
console.log('hoge!!');
});
obj.hoge; //=> hoge!!
こんな感じで()つけなくても関数が呼び出されるのでプロパティにアクセスのようにして関数を呼び出すことができる。
Node.jsのライブラリのコード読んでるとよくdefineGetterがでてくる(Node.jsのコードというかTJのコードに多いだけな気もする)。
express/lib/request.js at master · visionmedia/express · GitHub
でもdefineGetterはECMAScript非標準なんで非推奨ってMDNに書いてある。
Object.definePropertyを使えって書いてある。Object.definePropertyを使うとこんな感じ。
var obj = {};
Object.defineProperty(obj, 'hoge', {
get: function() {
console.log('hoge!!');
}
});
obj.hoge; //=> hoge!!
もしくはこれでもいける。
var obj = {
get hoge() {
console.log('hoge!!');
}
};
obj.hoge; //=> hoge!!
どれが一番いいかはよくわからん。
- Prev Entry:github pages + jekyllにした
- Next Entry:jQueryのイベントハンドラでreturn falseするとイベントのバブリングが止まる