dev*_*os1 38 javascript properties getter-setter
是否有可能,给定一个对象和属性名称来确定该属性是使用getter还是setter定义的,还是完全透明的?我只想定义一个getter/setter,如果没有在属性上定义的那个.
我需要它在WebKit/Firefox中工作.
Gra*_*ham 38
我想你在找getOwnPropertyDescriptor?https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor
Jim*_*ert 27
您可以使用 Object.getOwnPropertyDescriptor(obj, prop)
例如:
var obj = { first: 1 }
obj.__defineGetter__('second', function() { return 2; });
// get descriptors
var descriptor1 = Object.getOwnPropertyDescriptor(obj, 'first');
var descriptor2 = Object.getOwnPropertyDescriptor(obj, 'second');
// check if it's a getter
descriptor2.get
// returns function () { return 2; }
descriptor1.get
// returns undefined
Run Code Online (Sandbox Code Playgroud)
您可以使用Object.getOwnPropertyDescriptor(obj,prop)。
function isGetter (obj, prop) {
return !!Object.getOwnPropertyDescriptor(obj, prop)['get']
}
Run Code Online (Sandbox Code Playgroud)
用法:
obj = {
foo: 'foo',
get bar() { return 'bar' }
}
isGetter(obj, 'bar') // will return true
isGetter(obj, 'foo') // will return false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13701 次 |
| 最近记录: |