如何用JS实现对象创建与多种继承方法?

摘要:js中对象的定义与其它面向对象语言不同,它的对象被描述为:一组无序属性的集合,其属性可以包含基本类型值、对象或者函数。 而其它面向对象语言中的对象,通常指代可以通过类创建多个的,具有相同属性和方法的对象。 如果我们想在js中创建第二种对象,
js中对象的定义与其它面向对象语言不同,它的对象被描述为:一组无序属性的集合,其属性可以包含基本类型值、对象或者函数。 而其它面向对象语言中的对象,通常指代可以通过类创建多个的,具有相同属性和方法的对象。 如果我们想在js中创建第二种对象,需要做什么?先定义它的构造函数。 1. 几种创建具有相同属性名与方法对象的方式 1)工厂模式 2)构造函数 3)原型模式 4)组合构造函数与原型 5)寄生构造函数 6)稳妥构造函数 es6: class, class是构造函数的语法糖 2. 继承的方式 1)原型链继承-让sub的原型指向super的实例 2)借用构造函数继承-调用call方法 3)混合继承-调用call方法,并且让sub的原型指向super实例,优点是可以让里面的引用类型属性比如数组,各自是各自的。 4)改良:寄生混合继承,让sub的原型指向super实例,不再调用super构造方法,而是使用Object.create() 5)手写Object.create(),就是在里面创建一个空方法F,临时让F的原型等于参数,再调用F构造函数。 es6: class + extend