//继承的时候不用改变原型的指姠,直接调用父级的js构造函数和类拿来
//解决了属性继承并且值不重复的问题
//缺陷:父级类别中的方法并不能够继承
发布了8 篇原创文章 · 獲赞 5 · 访问量 1万+
//继承的时候不用改变原型的指姠,直接调用父级的js构造函数和类拿来
//解决了属性继承并且值不重复的问题
//缺陷:父级类别中的方法并不能够继承
发布了8 篇原创文章 · 獲赞 5 · 访问量 1万+
基本思想利用原型让一个引用类型继承另一个引用类型的属性和方法
以上代码定义了两个类型:Father 和 Son 每个类型有一个属性和一个方法。Son 继承了 Father该继承是通过创建 Father 实例,將该实例赋给 Son.prototype 实现实现的本质是重写 Son 原型对象,代之以 Father 的实例
这个例子中的实例以及js构造函数和类和原型之间的关系如下图
借用子类型js构造函数和类的内部调用超类型的js构造函数和类
通过调用 call 方法在创建的 Son 的实例环境下调用了 Father 的js构造函数和类,这样一来我们在创建 Son 的实例对象就可以执行 Father 的定義的所有对象的初始化代码。Son 的每个实例对象就会拥有自己的 hobbies 属性以上代码也可以看出创建子类型 Son 的实例时,可以向超类型 Father 的js构造函数囷类中传递参数
方法和函数都在js构造函数和类中定义,所用类型只能使用js构造函数和类模式没有函数复用
组合继承结合上述原型链和借用js构造函数和类的优点,避免他们的缺陷
现在已经知道了原型对象,原型链的实现原型链式继承的缺陷;那么如何避免这个缺陷?
达到的效果相当於,子类拷贝了一份父类的方法和属性加上自己的方法和属性;