javascript - 如何判断 ES6 类是否有给定名称的 getter?

标签 javascript ecmascript-6

似乎 ES6 类没有像预期的那样响应 .hasOwnProperty 。

如果你有这个类(class):

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

此代码将返回 false:
let myFoo = new Foo();
alert(myFoo.hasOwnProperty("index"); <-- alerts "false"

我可以测试一个属性是否返回“未定义”,但这不会区分返回未定义的“get”和没有具有给定名称的方法的类对象,即
class Foo {
  get index() {
    return 12;
  }
  get position() {
    return undefined;
  }
}

测试 ES6 类上是否存在“getter”或“setter”的正确方法是什么?

最佳答案

JavaScript 中的类有点奇怪,因为它基本上只是原型(prototype)继承。所以在这种情况下,index应该存在于 myFoo 的原型(prototype)上:

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

关于javascript - 如何判断 ES6 类是否有给定名称的 getter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59275974/

相关文章:

javascript - 使用 let 变量而不是使用全局变量

javascript - 当用户放大 map 上的某个区域时,显示来自不同功能的特定数据

node.js - NodeJS 中的多个 await 调用错误处理

javascript - 从另一个选择框填充一个选择框并使用数据库连接

javascript - 如何编写 While 循环来提示一个单词并退出另一个单词的循环

node.js - 如何将单个反斜杠放入 ES6 模板文字的输出中?

javascript - ES6 中模块的导入和导出

javascript - 使用模态 Bootstrap-vue 获取背景上的事件点击

javascript - 当使用 jQuery 单击其中的 hyerplink 时,如何隐藏 li?

javascript - 我可以使用 jquery ajax 响应来自动完成吗