2

プロパティが次のように定義されているとします。

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

2 に答える 2

4

Object.getOwnPropertyDescriptor標準に準拠した方法です:

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

var ref2setVal = desc.set;
var ref2getVal = desc.get;
于 2013-05-04T12:12:37.143 に答える
1

使用する

var ref2setVal = window.__lookupGetter__('prop') ;
var ref2setVal = window.__lookupSetter__('prop') ;

http://javascriptweblog.wordpress.com/2010/11/15/extending-objects-with-javascript-getters/を参照してください。

編集: http: //jsfiddle.net/5zvvJ/を参照

于 2013-05-04T12:07:28.527 に答える