• 面向对象的继承


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

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

      接下来就是重要的一环了: 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内置类的原型

  • 相关阅读:
    java集合框架复习(一)
    java集合框架复习
    java集合框架
    Mysql视图的作用及其性能分析
    php语法基础
    MySQL UNION 与 UNION ALL 语法与用法
    mysql fetch 系列函数
    跨线程传递数据解决方案 ThreadLocal 和 HystrixRequestVariableDefault
    java中带参数的try(){}语法含义是什么?
    Activiti 设置comment的用户
  • 原文地址:https://www.cnblogs.com/shangjun6/p/10218943.html
Copyright © 2020-2023  润新知