【ES6】ES6中的诡异设计

下面这段代码,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"
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容