簡體   English   中英

如何判斷 ES6 類是否具有給定名稱的 getter?

[英]How to tell if an ES6 class has a getter of given name?

ES6 類似乎沒有像人們預期的那樣響應 .hasOwnProperty。

如果你有這個類:

class Foo {
  get index() {
    return 12;
  }
}

此代碼將返回 false:

let myFoo = new Foo();
alert(myFoo.hasOwnProperty("index"); <-- alerts "false"

我可以測試一個屬性是否返回“undefined”,但這不會區分返回 undefined 的“get”和沒有給定名稱的方法的類對象,即

class Foo {
  get index() {
    return 12;
  }
  get position() {
    return undefined;
  }
}

在 ES6 類上測試“getter”或“setter”是否存在的正確方法是什么?

JavaScript 中的類有點奇怪,因為它基本上只是原型繼承。 所以在這種情況下, index應該存在於myFoo的原型上:

class Foo {
  get index() {
    return 12;
  }
}
const myFoo = new Foo();
myFoo.hasOwnProperty('index'); // false
Object.getPrototypeOf(myFoo).hasOwnProperty('index'); // true

作為@zero298 鏈接;

Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj), 'index').get

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM