2020-12-17 es6 class 属性归属的疑惑

看到阮一峰的es6入门里,针对class有一句话:与 ES5 一样,实例的属性除非显式定义在其本身(即定义在this对象上),否则都是定义在原型上(即定义在class上)。我测试了一下似乎并非如此

class Event {
      list = []
      test = function () {
        console.log(this)
      }
}

很明显:list 和 test 都是定义在实例上,并非原型上的

class Event {
      list = []
      test () {
        console.log(this)
      }
 }

这样才是定义在prototype上
我的理解如果是表达式形式,都是定义在实例上的,函数形式都是定义在原型上的。
这句话确实以及给出的例子都会让人误解,以为是只有

class Event {
     constructor() {
         this.list = [];
         this.test = function(params) {
             console.log(this)
         }
     }
}

这样的形式才是定义在实例上的。
事实上第一种方式和第三种方式是完全等价的。
获取还有其他的解释,欢迎大家和我讨论。

你可能感兴趣的:(2020-12-17 es6 class 属性归属的疑惑)