JavaScript中的handler.getPrototypeOf()方法是內部方法的陷阱。此方法返回與Object.getPrototypeOf(target)相同的值。
用法:
const p = new Proxy(obj, { getPrototypeOf(target) { ... } });
參數:
- target:目標對象。
返回值:如果未返回任何對象,則此方法始終返回一個對象,它返回null。
以下示例說明了JavaScript中的handler.getPrototypeOf()方法:
範例1:
<script>
const monster1 = {
porp:46
};
const monsterPrototype = {
porp:52
};
const handler = {
getPrototypeOf(target) {
return monsterPrototype;
}
};
const proxy1 = new Proxy(monster1, handler);
console.log(Object.getPrototypeOf(proxy1) === monsterPrototype);
console.log(Object.getPrototypeOf(proxy1).porp);
var obj = {};
var p = new Proxy(obj, {
getPrototypeOf(target) {
return Array.prototype;
}
});
console.log(
p instanceof Array
);
</script>
輸出:
true 52 true
範例2:觸發這種陷阱方法的五種方法
<script>
const obj = {};
const p = new Proxy(obj, {
getPrototypeOf(target) {
return Array.prototype;
}
});
document.writeln(Object.getPrototypeOf(p) === Array.prototype);
document.writeln("<br>");
document.writeln(Reflect.getPrototypeOf(p) === Array.prototype);
document.writeln("<br>");
document.writeln(p.__proto__ === Array.prototype);
document.writeln("<br>");
document.writeln(Array.prototype.isPrototypeOf(p));
document.writeln("<br>");
document.writeln(p instanceof Array );
</script>
輸出:
true true true true true
異常類型:
- TypeError:“target”不是對象或為null
範例1:<script> const obj = {}; const p = new Proxy(obj, { getPrototypeOf(target) { return 'Geeksforgeeks'; } }); console.log(Object.getPrototypeOf(p)); </script>
輸出:
Error:'getPrototypeOf' on proxy:trap returned neither object nor null
- TypeError:預期相同的原型值
範例2:TypeError:預期相同的原型值
<script> const obj = Object.preventExtensions({}); const p = new Proxy(obj, { getPrototypeOf(target) { return {}; } }); console.log(Object.getPrototypeOf(p)); </script>
輸出:
Error:'getPrototypeOf' on proxy:proxy target is non-extensible but the trap did not return its actual prototype
支持的瀏覽器:handler.getPrototypeOf()方法支持的瀏覽器如下:
- 穀歌瀏覽器
- Firefox
- Opera
- Safari
- Edge
相關用法
- Javascript padStart()用法及代碼示例
- Javascript Int8Array from()用法及代碼示例
- Javascript Reflect.get()用法及代碼示例
- Javascript Reflect.has()用法及代碼示例
- Javascript Unit16Array.from()用法及代碼示例
- Javascript handler.get()用法及代碼示例
- Javascript Int16Array from()用法及代碼示例
- Javascript Uint8Array.from()用法及代碼示例
- Javascript hasOwnProperty()用法及代碼示例
- Javascript compile()用法及代碼示例
- Javascript Uint32Array from()用法及代碼示例
- Javascript Array from()用法及代碼示例
- Javascript Array.from()用法及代碼示例
- Javascript handler.has()用法及代碼示例
- Javascript exec()用法及代碼示例
注:本文由純淨天空篩選整理自SHUBHAMSINGH10大神的英文原創作品 JavaScript | handler.getPrototypeOf() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。