[英]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.