js集成

原始继承模式--原型链

      过多的继承了没有用的属性

2:借用构造函数

      不能借用构造函数的原型

     每次借用构造函数都要多走构造函数

3:共享构造原型

   不能随便改造自己的原型   

4:圣杯模式
原型链;

<script>
            
            Grand.prototype.lastName='jx';
            function Grand(){
                
            }
            var grand= new Grand()
            Father.protptype=grand;
            function Father (){}
            var father=new Father()
            Son.prototype=father;
            
            function Son(){}
            var son=new Son();
            
            
    </script>


构造函数;

 <script type="text/javascript">
            function Person(name,age,sex){
                this.name=name;
                this.age=age;
                this.sex=sex;
            }
            function Student(name,age,sex,grade){
                Person.call(this,name,age,sex){
                    this.grade=grade;
                }
            }
            var student=new Student()
        </script>

共享原型;

 <script type="text/javascript">
            Father.prototype.name='deng';
            function Father(){
                
            }
            function Son(){
                
            }
            Son.prototype=Father.prototype;
            var son=new Son();
            var father= new Father();
        </script>
    
 inherit
<script type="text/javascript">
            Father.prototype.lastName='yang';
            function Father(){
                
            }
            function Son(){
                
            }
            function inherit(Target,Origin){
                Target.prototype=Origin.prototype;
            }
            inherit(Son,Father);//不能写在var son =new Son();之后,否则不能继承
              var son =new Son();
        
        </script>
以上的这个方法如果给他添加儿子新的属性,如下图,父亲也会同样继承,以为他们都是指向同一个原型,所以为了避免这种情况,进行如下修改

圣杯模式

<script type="text/javascript">
            function inherit(Targer,Origin){
                function F(){}
                    F.prototype=Origin.prototype;
                    Targer.prototype=new F();
                }   
                Father.prototype.name='deng';
                function Father(){
                    
                }
                function Son(){
                    
                }
            inherit(Son,Father);
            var son=new Son();
            var father=new Father();
              
 
        </script>

圣杯模式的最终代码

<script type="text/javascript">
            function inherit(Targer,Origin){
                function F(){}
                    F.prototype=Origin.prototype;
                    Targer.prototype=new F();
                    Target.prototype.constructor=Target;//调回他自己
                    Target.prototype.uber=Origin.prototype;//知道谁调用它
                }   
                Father.prototype.name='deng';
                function Father(){
                    
                }
                function Son(){
                    
                }
            inherit(Son,Father);
            var son=new Son();
            var father=new Father();
              
 
        </script>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 2,135评论 0 6
  • **原始继承模式--原型链 2:借用构造函数 3:共享构造原型 4:圣杯模式**一:原型链; 二:构造函数; 三:...
    小老虎丶冷心阅读 174评论 0 0
  • 面向对象的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。ECMAScr...
    DHFE阅读 992评论 0 4
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,149评论 0 21
  • 什么样的人 什么样的心情 你的追求 你到底想的什么 没有出口
    F_b03c阅读 99评论 0 0