__defineGetter__
と__defineSetter__
IE6,7では実装されていない
function User () {
}
User.prototype.__defineGetter__('name', function () {
return this.userName;
});
User.prototype.__defineSetter__('name', function (val) {
this.userName = val;
});
var user = new User();
user.name = 'hoge';
console.log(user.name); // hoge
これを応用して、__defineGetter__でthisをリターンしてやるとフラグメントメソッドのチェインができたりする
Socket.ioとかでやってる
SocketNamaspace.prototype.__defineGetter__('json', function () {
this.flags.json = true;
return this;
});
SocketNamespace.prototype.send = function (data) {
return this.packet({
type: this.flags.json ? 'json' : 'message',
data: data
});
};
// これは例なので動きません
var ns = SocketNamespace();
ns.json.send(data);