继承

JS继承

1.特点:继承具有单向性,一个对象可以被多个对象继承 。
2.JS继承有属性的继承和方法的继承。
3.属性的继承:在构造函数中完成特有属性的添加,将公有属性让父类完成追加 。
(1)通过call(this,name,age)方法
(2)通过apply(this,[name,age])方法
注意:两种方法第一个参数一样,都是指当前对象,后面的参数不同,call后面的参数为数据,apply后面的参数为数组。
4.方法的继承
(1)通过遍历父类对象的方法,将其放入子类对象中;
for(var i in Person.prototype){
Student.prototype[i]=Person.prototype[i];
}
如:

 //继承
 //定义人对象
        function Person(name, age) {
     
            //给Person对象添加属性
            this.name = name;
            this.age = age;
        }
        //给Person对象添加方法
        Person.prototype.walk = function () {
     
            console.log(this.name + "在走路");
        }
        Person.prototype.say = function () {
     
            console.log(this.name + "在说话");
        }
        var p1 = new Person("张三", 20);
        //定义学生对象
        function Student(name, age, grade, no) {
     
            //继承人的姓名和年龄
            // Person.call(this,name,age);
            Person.apply(this,[name,age]);
            //给学生对象添加自己的属性
            this.grade=grade;
            this.no=no;
        }
        //继承人的方法
        for(var i in Person.prototype){
     
            Student.prototype[i]=Person.prototype[i];
        }
        //为学生添加自己的方法
        Student.prototype.test=function(){
     
            console.log(this.name+"在考试");
        }
        var s1=new Student("小白",20,"一年级","1001");
        s1.walk();
        s1.say();
        s1.test();

结果如下图:
在这里插入图片描述
(2)通过原型链实现方法继承:
Student.prototype=new Person();
如:

  function Person(name, age) {
     
            //给Person对象添加属性
            this.name = name;
            this.age = age;
        }
        //给Person对象添加方法
        Person.prototype.walk = function () {
     
            console.log(this.name + "在走路");
        }
        Person.prototype.say = function () {
     
            console.log(this.name + "在说话");
        }
        var p1 = new Person("张三", 20);
     //定义学生对象
        function Student(name, age, grade, no) {
     
            //继承人的姓名和年龄
            // Person.call(this,name,age);
            Person.apply(this, [name, age]);
            //给学生对象添加自己的属性
            this.grade = grade;
            this.no = no;
        }
        //原型链继承
        Student.prototype = new Person();
        //为学生添加自己的方法
        Student.prototype.test = function () {
     
            console.log(this.name + "在考试");
        }
        var s1 = new Student("小华", 20, "一年级", "1001");
        s1.walk();
        s1.say();
        s1.test();

结果如下图:
在这里插入图片描述

你可能感兴趣的:(javascript,web前端)