首页 > Web开发 > 详细

js面向对象编程

时间:2021-06-02 21:34:36      阅读:28      评论:0      收藏:0      [点我收藏+]
class Person {
  
  constructor(name,age){
    this.name = name;
    this.age = age;
  }
  // 思考: speak对象放在了哪里? ----类的原型对象(prototype)上(实例对象上面没有),供实例使用。
  speak(){
    console.log(`I am ${this.name}, ${this.age} years old.`);
  }

}

// 继承
class Student extends Person {
  // constructor也可以不写,如果写了就必须有super来继承父亲的属性
  constructor(name,age,grade){
    super(name,age); // 如果是继承,则必须有super继承父类当中的属性
    this.grade = grade;
  }
  speak(){
    console.log(‘重写了父类继承过来的方法!‘)
  }
  study(){
    // 思考??: study方法放在了哪里? --累的原型对象上,供实例使用
    console.log(‘studying...‘);
  }
}

// Instantiation
let p1 = new Person(‘Jone‘, 18);
let p2 = new Student(‘Mary‘,16, 3); // 如果调用了子类中的不存在方法,会顺着原型链查找,查找父亲节点有没有。
p1.speak();
p2.speak();


// p1.speak.call(someObject) // call()可以更改某个类的方法的this对象

// ===========================

js面向对象编程

原文:https://www.cnblogs.com/lyzz1314/p/14842551.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!