基于原型的继承
先看代码
function Person(name, age) {
this.name = name;
this.age = age
}
Person.prototype.name = function () {
return this.name
}
Person.prototype.age = function () {
return this.age
}
Person.prototype.sayHi = function () {
return console.log('你好,我叫' + this.name)
}
let person = new Person('frank', 18)
person.name === 'frank'
person.age === 18
person.sayHi()
let person2 = new Person('jack', 19)
person2.name === 'jack'
person2.age === 19
person2.sayHi()
这里的父对象是Person,父对象的原型prototype上赋予了3个属性,当我们new一个新对象时,父对象的属性就继承给new出来的那个新对象上
基于class的继承
一样先看代码
class Person {
constructor(name, age) {
this.name = name;
this.age = age
}
name() {
return this.name
}
age() {
return this.age
}
sayHi() {
return console.log('你好,我叫' + this.name)
}
}
class Coder extends Person{
coding(){
console.log('coding')
}
}
let coder = new Coder('frank', 18)
coder.name === 'frank'
coder.age === 18
coder.sayHi()
需要注意的就是,使用class必须有constructor,如果没有,默认为空