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)
         }
     }
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 简介 静态方法 实例属性的新写法 静态属性 私有方法和私有属性 new.target属性 一、简介 类的由来...
    HalShaw阅读 3,998评论 0 0
  • class的基本用法 概述 JavaScript语言的传统方法是通过构造函数,定义并生成新对象。下面是一个例子: ...
    呼呼哥阅读 9,534评论 3 11
  • Class 的基本语法 简介 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。...
    huilegezai阅读 3,483评论 0 0
  • 简介 JavaScript语言中,生成实例对象的传统方法是通过构造函数。 ES6引入了Class(类)这个概念,作...
    oWSQo阅读 2,900评论 0 0
  • 简介 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。 上面这种写法跟传统的面...
    lhdoeo阅读 3,395评论 0 1