父子类的继承

发布于:2022-12-13 ⋅ 阅读:(246) ⋅ 点赞:(0)

 js文件

// extend:继承、扩展

//类People

// 数据属性 name,age,sex,weight

// 方法属性

//   study:学习时体重下降0.1

//   sleep:睡觉时体重上升0.1

// introduce:我是xxx今年xx岁了

function People(name,age,sex,weight){

    this.name=name;

    this.age=age;

    this.sex=sex;

    this.weight=weight;

}

People.prototype.study=function(){

      this.weight-=0.1

}

People.prototype.sleep=function(){

    this.weight+=0.1

}

People.prototype.introduce=function(){

    console.log(`我是${this.name},今年${this.age}了`);

}

var peo=new People("张三",23,true,120)

peo.study()

peo.introduce()

console.log(peo);

// 类与类可以形成父子关系:父类、子类

// 继承:子类可以拥有父类的属性,子类还可以拥有自己特有的属性

// 一个类可以有很多个子类;一个类只能有一个父类;

// 继承怎么实现

// ES5的继承

// 类 Man 男

// 新增数据属性:height

// 新增方法属性:playGame

function Man(name,age,weight,height){

    // 调用父类的构造函数,初始化从父类继承来的属性

    // 直接调用函数,默认函数内部this指向window,造成name等属性并没有添加到Man类对象上

    // 注意:修改this指向,让People内部的this指向正在创建的Man类对象

    // call方法修改this指向并调用函数,第一个参数就是this的新值,之后的参数是方法调用本来就需要的参数

    People.call(this,name,age,true,weight)

   this.height=height

}

// 将Man.prototype的原型从默认的Object.prototype改为People.prototype

// para1:指定的原型;返回值:新建的对象

Man.prototype=Object.create(People.prototype)

// 补上constructor属性

Man.prototype.constructor=Man

console.log(Man.prototype);

Man.prototype.playGame=function(){

    console.log("王者荣耀");

}

var m=new Man("李四",25,60,176)

m.playGame()

// 访问对象的属性,顺着原型链找,子类可以使用父类的

m.study()

console.log(m);

// 访问对象的属性,顺着原型链找,父类不可以使用子类的

// peo.playGame()

//Man--People--Object

console.log(m instanceof Man);

console.log(m instanceof People);

console.log(m instanceof Object);

m.introduce()

peo.introduce()

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到