zoukankan      html  css  js  c++  java
  • javascript关于继承

         上一篇已介绍了组合继承,现在讲讲剩余的几种继承。

      原型式继承

         调用一个函数,接收这个函数返回来的对象,这个对象的原型就是传入函数的参数对象。

    如:

    function   personObject(o){
           function  F(){}
           F.prototype = o;
           return  new F();
    }
    var person = {
         name:"Nicholas",
         friends:["Shelby","Court","Van"]
    }
    
    var person_one = personObject(person);

       从上面的代码中,我们知道person是person_one的原型。ES5中添加了一个方法规范化原型式继承,这个方法是Object.create(),这个方法有两个参数,第一个是作为新对象原型的对象,像上面的person,第二个是为新对象定义额外属性的对象。第二个参数可选。

     如:

    var  person_one =  Object.create(person, {
                   name: {
                            value:"Jon"
               }
    });

    当你只想让一个对象与另一个对象保持类似时,可以使用原型式继承。

      寄生式继承      

           在一个函数里实现一次原型式继承,然后为接收到的这个对象添加自己的属性与方法。

    如:

    function  createAnother(o){
          var  person_one =  personObject(o);
          person_one.sayHi = function(){
                  alert(" hi ");
          }
          return  person_one;
    }

        寄生组合式继承

           组合继承也有其缺点,它实现了两次属性继承,而寄生组合式继承就避免了这个问题。实例通过构造函数继承了属性,而原型的方法则是通过寄生式继承的方式来继承。

    如:

    function  inherit(subType, superType){
          var  prototype = Object(superType.prototype);
          prototype.constructor = subType;
          subType.prototype = prototype;
    }

       通过调用上面的函数,实现subTye.prototype的原型是superType.prototype,完成了原型方法的继承。

  • 相关阅读:
    怎样检测数据类型
    怎样理解函数参数的传递
    怎样在微信H5中点击直接跳转到公众号
    怎样启动和关闭nginx服务器
    怎样测试nginx.conf配置文件的正确性
    怎样查找/搜索文件
    怎样创建用户组并添加用户进用户组
    怎样查看Nginx版本号
    怎样写一个Hello World!
    怎样理解基本类型(原始类型)的数据和引用类型的数据
  • 原文地址:https://www.cnblogs.com/yezi-dream/p/5474092.html
Copyright © 2011-2022 走看看