如何找到属性的set/get函数(Object.defineProperty)
how to find the set/get functions of a property (Object.defineProperty)
假设一个属性定义如下:
Object.defineProperty(window, 'prop', {
set: setVal,
get: getVal,
configurable: true
}) ;
我要做的是重新定义window。道具,例如:
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。
Object.getOwnPropertyDescriptor
是符合标准的方式:
var desc = Object.getOwnPropertyDescriptor(window, "prop");
var ref2setVal = desc.set;
var ref2getVal = desc.get;
使用
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/
相关文章:
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- 如何取消object.prototypes javascript的一个函数
- 具有子类的构造函数中的Object.freeze
- Object.assign(),函数方法和内存使用
- 使用元素选择器向Object添加函数
- 成员函数中的Javascript“this”object==“window”
- 这在 Object 方法中不引用对象,而是引用函数绑定到的标记
- 有人可以解释一下Object.defineProperty如何在javascript的构造函数中工作
- 运行咕噜咕噜咕噜抛出 _.object 不是函数错误
- 从Object Literal调用函数
- 将函数参数传递给Object.assign
- 不涉及私有“函数”的“Object.create”的自定义实现
- 在NodeJS中传递回调函数变成Object
- Underscore.js:具有_.object函数的意外行为
- Javascript错误Object函数没有方法'url'
- Array.insert函数错误,因为Object函数Array(){〔本机代码〕}没有方法'插入'
- 用于更改object.object属性的函数
- 访问Object字段的JavaScript函数
- TypeError:对象函数Object(){〔本机代码〕}没有方法'方法'
- 如何找到属性的set/get函数(Object.defineProperty)