2023年3月13日 星期一

hasOwn() 與 in 的不同

 hasOwn() 與 in 的不同

前言

  在之前的 在 JavaScript 使用 in 與 hasOwnProperty() 與 hasOwn() 的差異 分別學習了 in 與 hasOwn() ,它們的功能很像,兩者都是檢查物件裡是否存在某成員,抽個空研究一下差異,在此把學習的過程做個紀錄。


內容

  範例如下

class baseClass{
  get prop(){
    return 1234;
  }
}
let obj = new baseClass();
//
console.log( 'constructor' in obj );//true
console.log( Object.hasOwn( 'constructor' , obj ) );//false
//
console.log( 'prop' in obj );//true
console.log( Object.hasOwn( 'prop' , obj ) );//false


in 可以檢查 'constrouctor' ,但 hasOwn() 卻沒辦法,會還傳 false ,還有一個差異是 class 裡的 getter 與 setter , in 一樣可以檢查,但 hasOwn() 會會傳 false 。


參考資料

[ masteringjs.io ] The Difference Between in and hasOwnProperty in JavaScript


相關文章與資料

在 JavaScript 使用 in

hasOwnProperty() 與 hasOwn() 的差異

沒有留言:

張貼留言