I Что перегрузить оператор =
для объектов JS с использованием Object.defineProperty
.Как перегружать = оператор с js es5 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)?
* Возможно ли (в es5)? * - № – thefourtheye
можно ли в es6? – amin
Нет. Оператор присваивания связывает объект с правой стороны с идентификатором левой стороны. Таким образом, это невозможно. – thefourtheye