Skip to content

Instantly share code, notes, and snippets.

@murayama
Created July 9, 2013 01:43
Show Gist options
  • Save murayama/5954009 to your computer and use it in GitHub Desktop.
Save murayama/5954009 to your computer and use it in GitHub Desktop.
javascriptのgetterとsetter

javascriptでgetterとsetterを使う

__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);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment