JavaScript面向对象(二)继承
程序员文章站
2022-06-15 18:49:45
...
继续上一篇,JS中的继承,JS中所有对象都是基于Object的,所以基本说是平等的。
准确来说JS中的类就是对象,继承实际上就是把所谓父类的原型给了子类
一、原型链继承
function Person(name,age) {
this.name=name;
this.age=age;
word="你好";
//普通方法,使用对象调用
this.hello=function () {
console.log("hello "+word+"我的名字是"+name);
}
}
//此时创建的是类方法,只可以通过类名调用
Person.show=function () {
console.log("Show.....")
};
//通过原型链创建的普通方法,使用对象调用
Person.prototype.ha=function () {
console.log("Ha.....");
};
//构造器构造一个对象
function Boy(id) {
//Person.call(name,this.age);
this.id=id;
}
//继承
Boy.prototype=new Person("sari",10);
//创建方法,注意要写在继承之后,否则报错TypeError: boy.disPlay is not a function
Boy.prototype.disPlay=function(){
console.log(this.name+this.age+this.id)
};
//创建对象
boy=new Boy(3);
boy.ha();
boy.hello();
console.log(boy.age);
console.log(boy.id);
boy.disPlay();
Ha.....
hello 你好我的名字是sari
10
3
sari103
二、ES6继承
ES6中可以使用extends关键字继承,super关键字等
class Person {
constructor(names,age,word){
this.names=names;
this.age=age;
console.log("name:"+names+" age:"+age+" word:"+this.word)
}
disPlay(){
console.log("name:"+this.names+" age:"+this.age+" word:"+this.word)
}
}
Person.prototype.word="ES";
//以上代码为一个父类
//子类继承使用extends
class Girl extends Person{
constructor(names,age,word){
super(names,age);
}
}
g1=new Girl("111",1,11);
console.log(g1.word);
name:111 age:1 word:ES
ES