zoukankan      html  css  js  c++  java
  • 面向对象的继承

      谈到面向对象,不得不说一下他的继承,这也是对象三大特征之一

      我们常说面向对象是初级前端和中级前端的分水岭,如何熟练的掌握面向对象,称为中级前端呢?

      接下来就是重要的一环了: 6大继承

      克隆对象:

        var obj={

          name:"zhang"

        }

        var obj2=obj  这种写法不是对象克隆(只是把obj的内存地址赋值给obj2)

        克隆写法(通过for in 克隆       (有一大特性:不管是公有的还是私有的,都会克隆成私有的))

        案例:

          var obj={

            name:"zhang",

            age:20

          }

          var obj2={}

          for(var key in obj){

            obj2[key]=obj[key]

          }

          console.log(obj2)

          通过这种方法就能得到obj的所有属性了;

      除此之外,js也提供了一个克隆的方法   :Object.create()

      案例:

        var obj={

          name:"zhang",

          age:20

        }

        var obj2=Object.create(obj)   将obj的所有属性克隆到obj2的原型上

        console.log(obj2)

         如果想obj2添加私有属性:var obj2=Object.create(obj,{name:{value:"lisi"}})

      这种写法得到最后的结果

      obj2=name:"lisi"

      __proto__:{name:"zhang",age:20}

      对象的继承:

      1.原型的继承:将父类的私有和公有的继承在子类的原型上,成为子类的公有的;

      案例:

      function A(){

        this.name="zhang"

      }

      A.prototype.s=10;

      function B(){

        this.age=20;

      }

      B.prototype=new A;

      var b=new B;

      console.log(b)

      2.call继承:将父类的私有的继承为子类的私有的

      案例:

      function A(){

        this.name="zhang"

      }

      A.prototype.s=20;

      function B(){

        this.age=10;

        A.call(this)

      }

      B.prototype.y=11;

      var b=new B;

      console.log(b)

      3.冒充对象的继承:将父类的私有的和公有的都继承为私有的;

      案例:

      function A(){

        this.name="zhang"

      }

      A.prototype.s=10;

      function B(){

        this.age=40;

        var a=new A;

        for(var key in a){

          this[key]=a[key]

        }

        a=null;

      }

      B.prototype.y=20

      var b=new B;

      console.log(b)

      4.混合继承:父类私有的继承为子类私有的,父类私有的,公有的继承为子类公有的;

      案例:

      function A(){

        this.name="zhang"

      }

      A.prototype.s=41;

      function B(){

        this.age=10;

        A.call(this)    

       }

      B.prototype=new A;

      var b=new B;

      console.log(b)

      5.组合继承 :父类私有的继承为子类私有的,父类公有的继承为子类公有的

      案例:

      function A(){

        this.name="zhang"

      }

      A.prototype.s=10;

      function B(){

        this.age=20;

        A.call(this)

      }

      B.prototype=Object.create(A.prototype)

      var b=new B;

      console.log(b)

      6.中间类继承

      案例:

        function fn(){

          arguments.__proto__=Array.prototype

          arguments.shift

          console.log(arguments)

        fn(12,25,98)

        argument不是一个数组,没有Array自带的那些方法,现在我们想arguments有array的那些方法,将arguments的原型执行array内置类的原型

  • 相关阅读:
    作为Bootstrap中文站维护者-我们再次翻译BootstrapVue项目
    在vs2017和vs2019下发布应用之Windows程序打包-附图标修改和默认安装路径定义全教程
    Windows应用开发中程序窗口中的各种图标尺寸规划
    SVN设置忽略文件列表以及丢失了预定增加的文件解决方法
    基于VuePress构建高基于markdown语法的网站全教程
    国家高新技术企业门户与移动全生态开发套件-Zooma!逐浪CMS v8.1.4正式发布
    Json跨域登录问题的之Access-Control-Allow-Origin 站点跨域请求的问题
    IIS设置URL重写,实现页面的跳转的重定向方法
    163邮件:554 DT:SPM 163 smtp11,D8CowABHLj7jX_BdY+q6Ag--.21946S2 1576034275,please see http://mail.163.com/help/help_spam_16.htm?ip=117.22.255.130&hostid=smtp11&time=1576034275
    读《阿里巴巴Java开发手册 1.4.0》笔记
  • 原文地址:https://www.cnblogs.com/shangjun6/p/10218943.html
Copyright © 2011-2022 走看看