【发布时间】:2019-12-10 21:57:34
【问题描述】:
似乎 ES6 类没有像预期的那样响应 .hasOwnProperty。
如果你有这个课程:
class Foo {
get index() {
return 12;
}
}
此代码将返回 false:
let myFoo = new Foo();
alert(myFoo.hasOwnProperty("index"); <-- alerts "false"
我可以测试一个属性是否返回“未定义”,但这不会区分返回未定义的“获取”和没有具有给定名称的方法的类对象,即
class Foo {
get index() {
return 12;
}
get position() {
return undefined;
}
}
在 ES6 类上测试“getter”或“setter”是否存在的正确方法是什么?
【问题讨论】:
-
不要在Javascript中使用类,你不会有这个问题:)
-
好的,感谢第一个似乎并没有完全做到这一点,但 MDN 页面建议这样做: Object.getOwnPropertyDescriptor(Object.getPrototypeOf(myFoo), 'index');这有点麻烦,但至少有效。
-
是的,如果我也使用 ruby,我想我不会有这个问题。