JavaScript——面向对象编程之继承

文章目录

    • 原型继承(Es6之前)
    • class继承(Es6新特性)
    • 原型链

原型继承(Es6之前)

原型对象(类)

对象:具体实例

var student = {
     
  name : "shenming",
  age : 3,
  sex : '男',
  run:function(){
     
     console.log(this.name +"快跑");
  }
};


var xiaomimg = {
     
  name : "taoxian"
};

//原型继承 把xiaomimg的原型指向了student(原型对象),继承后xiaoming也可以调研student方法
xiaomimg.__proto__=student;

xiaomimg.run()
 taoxian快跑
student.run()
 shenming快跑

class继承(Es6新特性)

定义一个类(包含属性,方法)

 //定义一个学生类
        class student{
     
           constructor(name){
     //构造函数
             this.name = "shenming"
           }
          hello(){
     
            alert("桃仙")
          }
        }

//定义学生类的变量(可以多个)
 var xiaoming = new student("xiaoming");
 var taoxian = new student("taoxian");
//类的使用
xiaoming.hello()
xiaoming.name
taoxian.hello()
taoxian.name

class继承

//定义一个学生类
        class Student{
     
           constructor(name){
     
             this.name = "shenming"
           }
          hello(){
     
            alert('hello')
          }
        }
        //class继承
        class XiaoStudent extends Student{
     
          constructor(name,grade){
     
             super(name);
             this.grade = grade;
          }
          myGrade(){
     
            alert('小学生')
          }
        }

        //定义学生类的变量,继承后,通过变量调用XiaoStudent 里的方法
        var xiaoming = new Student("xiaoming");
        var taoxian = new Student("taoxian");

class继承的本质还是指向原型(类),只不过写法更容易接受

原型链

prototype属性

在JavaScript中,每个函数都有一个prototype属性,这个属性指向函数的原型对象。

__ proto __属性

这是每个对象(除null外)都会有的属性,叫做proto,这个属性会指向该对象的原型。

每个对象都可以有一个原型_proto_,这个原型还可以有它自己的原型,以此类推,形成一个原型链。查找特定属性的时候,我们先去这个对象里去找,如果没有的话就去它的原型对象里面去,如果还是没有的话再去向原型对象的原型对象里去寻找… 这个操作被委托在整个原型链上,这个就是我们说的原型链了。

链接:https://www.jianshu.com/p/08c07a953fa0

你可能感兴趣的:(JavaScript,javascript,prototype,面向对象编程,proto)