javascript - 遍历 ES6 类的方法和属性

标签 javascript loops ecmascript-6

因此,随着使用 JavaScript 的新框架的发展,许多框架都采用了 ECMAScript 6 shim 或 TypeScript,并具有许多新功能。我的问题是:

如何迭代 ES6 类的方法/属性?

例如(有对象)

var obj = {
  prop: 'this is a property',
  something: 256,
  method: function() { console.log('you have invoked a method'); }
}

for (var key in obj) {
  console.log(key);
}

// => 'prop'
// => 'something'
// => 'method'

(有类(class))

class MyClass {
  constructor() {
    this.prop = 'prop';
    this.something = 256;
  }

  method() {
    console.log('you have invoked a method');
  }
}

如何列出 MyClass 具有的方法,以及可选的属性?

最佳答案

构造函数 和任何已定义的方法都是类的prototype 对象的不可枚举 属性。

因此,您可以获得名称数组(无需构造类的实例):

Object.getOwnPropertyNames(MyClass.prototype)

如果不创建实例就无法获取属性,但是创建实例后您可以使用 Object.keys 函数,该函数仅返回对象的可枚举属性:

Object.keys(myInstance)

据我所知,没有标准的方法可以同时获得原型(prototype)的不可枚举属性和实例的可枚举属性。

关于javascript - 遍历 ES6 类的方法和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771418/

相关文章:

JavaScript 按键缓冲区问题

javascript - 正则表达式捕获字符集但不捕获某些特定字符

javascript - css Sprite 动画的setInterval

ecmascript-6 - 为什么我应该在函数内部使用 let 而不是 const?

javascript - 按名称模式搜索本地 javascript 变量

javascript - Visual Studio 无法识别 ES6 模板字符串

javascript - jQuery UI Widget Factory 和原型(prototype)?

javascript - 有没有办法选择没有输入[类型]的手机键盘?

excel - 如何在 For Next 中应用 Step -1 以相反的顺序循环?

performance - 为什么我的Scala尾递归比while循环快?