继承有助于实现代码的复用。
一个对象通过继承另一个对象,就能拥有另一个对象的所有属性和方法。
原型链继承
子类型的原型为父类型的一个实例对象
//父类型
function Person(name, age) {
this.name = name,
this.age = age,
this.play = [1, 2, 3]
this.setName = function () { }
}
Person.prototype.setAge = function () { } //原型对象添加方法
//子类型
function Student(price) {
this.price = price
this.setScore = function () { }
}
Student.prototype = new Person() // 子类型的原型为父类型的一个实例对象,子类型继承父类型的属性和方法
var s1 = new Student(15000) //创建子类型实例时不能向父类型传递参数
var s2 = new Student(14000) //创建两个子类型对象实例
s1.name='zhangsan'; //子类型实例创建成功后,可以对父类型构造函数进行传参
s1.age=10;
console.log(s1,s2)
将子类的原型指向父类的实例,所有子类的实例可以通过__proto__访问到Student.prototype也就是Person的实例,子类型可以访问父类型私有的属性和方法,通过Person实例的__proto__指向父类型的prototype原型对象,子类型可以访问父类型原型方法。
子类型通过原型链继承将父类型的私有属性和原型方法(公有方法)作为子类型的公有属性和方法。
操作基本数据类型是操作数值,操作引用数据类型操作的是地址,当父类型的私有属性中存在引用数据类型,通过继承称为子元素