handler.ownKeys()
JavaScript handler.ownKeys()方法
JavaScript的
handler.ownKeys()方法用于返回可枚举的对象。此方法是Reflect.ownKeys()的陷阱。
语法
ownKeys: function(target)
参数
target:目标对象。
返回值
返回可枚举的对象。
浏览器支持
Chrome |
49 |
Edge |
12 |
Firefox |
18 |
Opera |
36 |
示例1
<script>
var proxy1 = new Proxy({}, {
ownKeys: function(target) {
document.writeln(" Use handler.ownKeys() is ");
return ['a', 'b', 'c'];
}
});
document.writeln(Object.getOwnPropertyNames(proxy1));
//expected output: Use handler.ownKeys() is a,b,c
</script>
输出:
Use handler.ownKeys() is a,b,c
示例2
<script>
var x = {
Age:24,
Count: 45
}
var y = {
ownKeys (target) {
return Reflect.ownKeys(target)
}
}
var z = new Proxy(x,y);
for (let key of Object.keys(z))
{
document.writeln(key);
// expected output: Age Count
}
</script>
输出:
示例3
<script>
var x = { foo: 1 };
Object.defineProperty(x, 'variable', { value: 2,
writable: true,
enumerable: false,
configurable: true } );
var proxy = new Proxy(x, {
ownKeys: function(target, a, b) {
document.writeln('in ownKeys method');
var names = Object.getOwnPropertyNames(target);
//Useing Object.getOwnProperty mehod.
var symbols = Object.getOwnPropertySymbols(target);
return names.concat(symbols);
}
});
document.writeln(Object.keys(proxy));
//expected.output: in ownKeys method foo
document.writeln("<br/>")
document.writeln(Object.getOwnPropertyNames(proxy));
//expected output: in ownKeys method foo,variable
</script>
输出:
in ownKeys method foo
in ownKeys method foo,variable