当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Javascript handler.setPrototypeOf()用法及代码示例


JavaScript中的handler.setPrototypeOf()方法是Object.setPrototypeOf()方法的陷阱,它返回一个布尔值。

用法:

const p = new Proxy(target, {
  setPrototypeOf:function(target, prototype) {
  }
});

参数:该方法接受上述和以下所述的两个参数:



  • target:此参数是目标对象。
  • prototype:此参数是对象的新原型或null。

返回值:此方法返回一个布尔值。如果[[Prototype]]成功更改,则返回true。

以下示例说明了JavaScript中的handler.setPrototypeOf()方法:

范例1:

<script> 
const handler1 = { 
  setPrototypeOf(gfg, gfgProto) { 
    gfg.geneticallyModified = true; 
    return false; 
  } 
}; 
  
const gfgProto = {}; 
const gfg = { 
  geneticallyModified:false
}; 
  
const proxy1 = new Proxy(gfg, handler1); 
console.log(Reflect.setPrototypeOf(proxy1, gfgProto)); 
console.log(gfg.geneticallyModified); 
  
var soo={   
  foo:1   
}   
var proxy = new Proxy(soo, {   
  setPrototypeOf(target, newProto) {   
  }   
});   
console.log('a' in proxy);  
</script>

输出:

false
true
false

范例2:

<script> 
const handlerThrows = { 
    setPrototypeOf(target, newProto) { 
        throw new Error('custom error'); 
    } 
};  
  
const newProto = {}, target = {}; 
  
const p2 = new Proxy(target, handlerThrows); 
document.writeln(Object.setPrototypeOf(p2, newProto));   
document.writeln(Reflect.setPrototypeOf(p2, newProto)); 
</script>

输出:

Error:custom error

支持的浏览器:handler.setPrototypeOf()方法支持的浏览器如下:

  • 谷歌浏览器
  • Firefox
  • Opera
  • Safari
  • Edge



相关用法


注:本文由纯净天空筛选整理自SHUBHAMSINGH10大神的英文原创作品 JavaScript | handler.setPrototypeOf() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。