欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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