美文网首页
【ES6】ES6中的诡异设计

【ES6】ES6中的诡异设计

作者: 复苏森林 | 来源:发表于2020-09-09 11:08 被阅读0次

    下面这段代码,proto类里面的this,居然指向obj !!!!
    原因是:所谓的super.xxx()就是个语法糖:Object.getPrototypeOf(this).xxx

    四不像啊,做了个面向对象居然是四不像。而且继承关系居然是后写的,而不是直接定义出来的。也就是说,你写个代码,莫名其妙被别人继承了,然后莫名其妙你的代码的行为就超出了你的控制。

    感觉所谓的ES5就是对ES5做了一层解释器语法糖,本质还是ES5,怪不得可以直接翻译成ES5的代码。所以很多特性其实也没啥。
    比如加入一个特性的时候,可能造成解释器搞不清楚是哪种,就强制规定不许某种写法?

    const proto = {
      x: 'hello',
      foo() {
        console.log(this.x);
      },
    };
    
    const obj = {
      x: 'world',
      foo() {
        super.foo();
      }
    }
    
    Object.setPrototypeOf(obj, proto);
    
    obj.foo() // "world"
    

    相关文章

      网友评论

          本文标题:【ES6】ES6中的诡异设计

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