关于JS中的继承
JS继承是一个重点,在之前的面试中好几次面试官都提到这个问题。所以这次整理一下。
参考:
https://juejin.im/entry/58dfbe0361ff4b006b166388
http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html
1、类式继承【原型链继承】
类式继承就是将子代的原型 等于 父代的构造函数。如代码所示。
// 声明父类
function Animal() {
this.name = 'animal';
this.type = ['pig', 'cat'];
}
// 为父类添加共有方法
Animal.prototype.greet = function(sound) {
console.log(sound);
}
// 声明子类
function Dog() {
this.name = 'dog';
}
// 继承父类
Dog.prototype = new Animal();
var dog = new Dog();
dog.greet('汪汪'); // "汪汪"
console.log(dog.type); // ["pig", "cat"]
问题:(1)包含引用类型值的原型
(2)在创建子类型的实例时,不能像超类型的构造函数中传递参数【没有办法在不影响所有对象实例的情况下,给超类型的构造函数传递参数】
2、借用构造函数
/