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


Javascript handler.getPrototypeOf()用法及代碼示例

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

異常類型:

  1. 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
  2. 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



相關用法


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