编程语言
首页 > 编程语言> > JavaScript之四大继承方法

JavaScript之四大继承方法

作者:互联网

  一、传统形式  -->原型链

  缺点:像下面这个案例,如果我只是需要lastName这个属性,那么还会继承到name这个属性,浪费空间。

1       Grand.prototype.lastName = "Y";
2         function Grand(){};
3         Father.prototype = Grand;
4         function Father(){
5             this.name = 'Father';
6         };
7         Son.prototype = Father;
8         function Son(){};
9         let son   = new Son();
View Code

  二:借用构造函数

  缺点:借用别人的构造函数对象,但是原型还是使用我们自己的,等于只是调用了它的方法,视觉上虽然省了代码,但是该执行还是得执行。

 1       function Person(name,sex,age){
 2             this.name = name
 3             this.sex = sex;
 4             this.age = age;
 5         }
 6         function Student(name,sex,age,grade){
 7             Person.call(this,name,sex,grade);
 8             /*
 9                 相当于
10                 this.name = name;
11                 this.sex  = sex;
12                 this.age  = age;
13             */
14 
15             this.grade = grade;
16         }
View Code

  三、共享原型

  缺点:如果其中一个修改了原型,那么另外一个也会受到干扰。

        Father.prototype.lastName = "Y";
        function Father(){};
        function Son(){};
        Son.prototype = Father.prototype;

        //若执行下面这一条,那么Father.prototype.lastName 也会相应发生改变
        Son.prototype.lastName = 'Son';
 
View Code

  四:圣杯模式

  

  function inherit(Target,Orgin){
            
            function F(){};
            F.prototype = Orgin.prototype;
            Target.prototype = Orgin.prototype;
            Target.prototype.constructor = Target;
            Target.prototype.uber = Orgin.prototype;//uber相当于supre,利用这个查询最终继承谁

        }


        
        Father.prototype.lastName = 'Y';
        function Father(){};
        function Son(){};
View Code

  五:总结

  传统继承形式:原型链,会过多继承没用的属性,浪费空间。

  借用构造函数:不能继承借用构造函数的原型,每次创建一个对象都要多执行一次

  共享性☆☆☆☆☆☆:不能随便更改自己的原型,否则会影响继承/被继承的原型。

  圣杯模式☆☆☆☆☆☆:继承或者非继承对象修改自己的原型,不会影响另外一个的原型。

 

标签:function,name,继承,JavaScript,Father,Son,四大,原型,prototype
来源: https://www.cnblogs.com/Yzengxin/p/16076405.html