Question

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 ?

Était-ce utile?

La solution

Object.getOwnPropertyDescriptor is the standards compliant way:

var desc = Object.getOwnPropertyDescriptor(window, "prop");

var ref2setVal = desc.set;
var ref2getVal = desc.get;

Autres conseils

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/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top