=
を使用して JS オブジェクトの演算子をオーバーロードする方法を教えてObject.defineProperty
ください。
var log = console.log.bind(console);
var obj = { };
Object.defineProperty(obj,'var', {
get: function() { log('get'); return obj._var; },
set: function(v) { log('set'); obj._var = v; }
});
これは、単純なプロパティを定義するための標準的な es5 構文です。
現在は、オーバーロードされた演算子obj.var
を持つプロパティです。
しかし、実際に何をすべきかは、それ自体の演算子をオーバーロードすることです。=
=
obj
obj.var = 'a'; // prints: get
var v = obj.var;
v = 'b'; // prints: nothing!
// of course that's right, because v is an string now.
=
オブジェクト自体の演算子をオーバーロードする方法は?
//i what something like this
v = 'b'; // should print: set
(es5で)可能ですか?