美文网首页
【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