2013-05-04 62 views
2

假设一个属性的定义如下:如何找到设置/获取属性的功能(Object.defineProperty)

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不起作用,但是有这种可能吗?

回答

4

Object.getOwnPropertyDescriptor是符合标准的方式:

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

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

文档:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor – 2013-05-04 12:13:25

+0

感谢链接@FelixKling。我会在中添加。 – 2013-05-04 12:14:08