當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Javascript Reflect.setPrototypeOf()用法及代碼示例

JavaScript中的Reflect.setPrototypeOf()方法用於將指定對象的原型設置為另一個對象或Null。此方法返回成功操作的布爾值。

用法:

Reflect.setPrototypeOf(obj, prototype)

參數:



  • Obj:此參數保存目標對象,並用於設置原型。
  • Prototype:此參數保存對象的新原型。它可以是任何對象,也可以僅僅是null。

返回值:此方法始終返回一個布爾值,該值指示是否成功完成了原型的設置。

異常:當目標不是對象時,TypeError是作為結果給出的異常。

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

範例1:
const object1 = {}; 
  
console.log(Reflect.setPrototypeOf(object1, Object.prototype)); 
console.log(Reflect.setPrototypeOf(object1, null)); 
  
const object2 = {}; 
console.log(Reflect.setPrototypeOf(Object.freeze(object2), null)); 
  
let object3 = {   
  gfg() {   
    return 'value';   
  }   
}   
let obj = {   
  geeks() {   
    return 'answer';   
  }   
}   
Object.setPrototypeOf(obj, object3);   
console.dir(obj);    
console.log(obj.geeks());     
console.log(obj.gfg());  

輸出:

true
true
false
"answer"
"value"

範例2:

console.log(Reflect.setPrototypeOf({}, Object.prototype) );  
   
// It can change an object's [[Prototype]] to null. 
console.log(Reflect.setPrototypeOf({}, null));  
   
// Returns false if target is not extensible. 
console.log(Reflect.setPrototypeOf(Object.freeze({}), null));   
   
// Returns false if it cause a prototype chain cycle. 
let target = {} 
let proto = Object.create(target)  
console.log(Reflect.setPrototypeOf(target, proto) );   
   
var object3 = {   
   gfg() {   
     console.log(this.name + ' have fun.');   
   }   
};   
class objt {   
   constructor(name) {   
   this.name = name;   
  }   
}   
Reflect.setPrototypeOf(objt.prototype, object3);   
  
// If you do not do this you will get 
// a TypeError when you invoke speak   
var val = new objt('Geeks');   
val.gfg();

輸出:

true
true
false
false
"Geeks have fun."

支持的瀏覽器:下麵列出了JavaScript Reflect.setPrototypeOf()方法支持的瀏覽器:

  • 穀歌瀏覽器
  • Firefox
  • Opera
  • Safari
  • Edge



相關用法


注:本文由純淨天空篩選整理自SHUBHAMSINGH10大神的英文原創作品 JavaScript | Reflect.setPrototypeOf() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。