javascript - 非 ES6 Javascript 中如何处理类扩展?

标签 javascript ecmascript-6

said ES6 class 关键字就是 syntactic sugar Javascript 基于原型(prototype)的继承系统。这是显而易见的,但有一个异常(exception):extends 关键字。例如:

class Foo {
    constructor(){
        this.sayHello = () => console.log('Hello')
    }
}

class Bar extends Foo {
    constructor(){
        super(); 
        this.sayGoodbye = () => console.log('Goodbye');
    }
}

如果class只是语法糖,那么这里到底发生了什么?是否有一个标准的

最佳答案

Is there a standard < ES6 design pattern that simulates class inheritance being invoked?

JavaScript 有一个原型(prototype)继承模型,这也是通过 class 关键字得到的。您的代码大约相当于:

function Foo () {
    this.sayHello = () => console.log('Hello')
}

function Bar () {
    // super();
    Foo.call( this );

    this.sayGoodbye = () => console.log('Goodbye');
}

// extends
Bar.prototype = Object.create( Foo.prototype );
Bar.prototype.constructor = Bar;

关于javascript - 非 ES6 Javascript 中如何处理类扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48100108/

相关文章:

javascript - 热重载在我的 React 应用程序中不起作用

Javascript promise 序列

javascript - 有 Angular Material (8) S2591 : Cannot find name 'require'

javascript - 亚马逊的新功能允许上传设备相机拍摄的照片——怎么样?

javascript - Microsoft Edge 扩展 : will runtime. onInstalled 在加载未打包的扩展时发生火灾?

分隔符内的 Javascript 倒序

javascript - enzyme 安装/浅一次在 Mocha 上钩之前

javascript - Node 文档中的这个 `…${…}…` 代码是什么意思?

javascript - ES6中有没有一种简单的方法来减少迭代器?

javascript - 有什么方法可以扩展 javascript 的 array.sort() 方法以接受另一个参数?