假设属性定义如下:
Object.defineProperty(window, 'prop', {
set: setVal,
get: getVal,
configurable: true
}) ;
我想要做的是重新定义window.prop,例如:
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不起作用,但这样可能吗?
答案 0 :(得分:4)
Object.getOwnPropertyDescriptor
符合标准的方式:
var desc = Object.getOwnPropertyDescriptor(window, "prop");
var ref2setVal = desc.set;
var ref2getVal = desc.get;
答案 1 :(得分:1)
使用
var ref2setVal = window.__lookupGetter__('prop') ;
var ref2setVal = window.__lookupSetter__('prop') ;
请参阅http://javascriptweblog.wordpress.com/2010/11/15/extending-objects-with-javascript-getters/。