Object.getOwnPropertyDescriptor
is the standards compliant way:
var desc = Object.getOwnPropertyDescriptor(window, "prop");
var ref2setVal = desc.set;
var ref2getVal = desc.get;
Pregunta
Suppose a property is defined as follows:
Object.defineProperty(window, 'prop', {
set: setVal,
get: getVal,
configurable: true
}) ;
What I would like to do is to redefine window.prop, for example:
var ref2setVal = window.prop.set ;
var ref2getVal = window.prop.get ;
Object.defineProperty(window, 'prop', {
set: function(val){ ref2setVal(val*2); },
get: function() { return 10 + ref2getVal(); }
}) ;
window.prop.set/get does not work, but is something like this possible ?
Solución
Object.getOwnPropertyDescriptor
is the standards compliant way:
var desc = Object.getOwnPropertyDescriptor(window, "prop");
var ref2setVal = desc.set;
var ref2getVal = desc.get;
Otros consejos
Use
var ref2setVal = window.__lookupGetter__('prop') ;
var ref2setVal = window.__lookupSetter__('prop') ;
See http://javascriptweblog.wordpress.com/2010/11/15/extending-objects-with-javascript-getters/.
Edit: See http://jsfiddle.net/5zvvJ/