rob-gordon rob-gordon - 7 months ago 37
Javascript Question

Multiple Parameters for Object.defineProperty Setter Function?

Is it possible to have multiple parameters for Object.defineProperty setter function?

E.G.

var Obj = function() {
var obj = {};
var _joe = 17;

Object.defineProperty(obj, "joe", {
get: function() { return _joe; },
set: function(newJoe, y) {
if (y) _joe = newJoe;
}
});

return obj;
}


I don't get any errors from the syntax, but I can't figure out how to call the setter function and pass it two arguments.

Answer

Is it possible to have multiple parameters for Object.defineProperty setter function?

Yes, but it's not possible to invoke them (other than Object.getOwnPropertyDescriptor(obj, "joe").set(null, false)). A setter is invoked with the one value that is assigned to the property (obj.joe = "doe";) - you cannot assign multiple values at once.

If you really need them (for whatever reasons), better use a basic setter method (obj.setJoe(null, false)).

Comments