介绍
getPrototypeOf方法主要用来拦截获取对象原型。具体来说,拦截下面这些操作
-Object.prototype.proto
//该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。
-Object.prototype.isPrototypeOf()
//isPrototypeOf() 方法用于测试一个对象是否存在于另一个对象的原型链上。
-Object.getPrototypeOf()
//Object.getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)。
-Reflect.getPrototypeOf()
//Reflect.getPrototypeOf 返回指定对象的原型 (例如:内部的 [[Prototype]] 属性的值)
-instanceof
//instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置
demo
<script>
{
var proto = {};
var p = new Proxy(proto,{
getPrototypeOf(target){
return target;
}
});
console.log(Object.getPrototypeOf(p) === proto);//true
}
//上面代码中,getPrototypeOf方法拦截Object.getPrototypeOf(),返回proto
//对象。
//注意,getPrototypeOf方法的返回值必须是对象或者null,否则报错。另外,如果目标对象不可扩展(non-extensible),
//getPrototypeOf方法必须返回目标对象的原型对象。
</script>