美文网首页
2020-12-17 es6 class 属性归属的疑惑

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

作者: 是嘤嘤嘤呀 | 来源:发表于2020-12-17 18:11 被阅读0次

    看到阮一峰的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 属性归属的疑惑

          本文链接:https://www.haomeiwen.com/subject/sxgzgktx.html