我使用什么来重载=
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 语法。
Nowobj.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 中)吗?