zoukankan      html  css  js  c++  java
  • JS继承

    面向对象:

      私有属性、私有方法、特权方法、静态方法、静态属性、公共属性、公共方法、继承、闭包

    闭包:有权访问 另一个函数作用域中的变量 的函数

        因为链式作用域问题,父级可以访问子级方法内部的变量,

        将子级函数作为返回值

    继承:

      类式继承:

           父类的实例赋值给子类的原型。

           实例化父类,同时创建了父类原型,将子类原型指向声明的父类,此时子类原型可以访问父类以及父类原型。

           构造函数继承:

           在子类的构造函数作用域中执行父类的构造函数

           子类中声明添加此句 Parent.call(this,params);

      组合是继承:

           类式继承+构造函数式继承

                             还是经典的call来调用父类构造函数,将父类重新执行一遍,类似于刷新一遍,这样多个子类实例之间不受引用类型的影响。

      原型式继承:子类声明接收父类的类F,将F的原型指向进来的父类,return new F();

            将父类在子类中封装返回。

            

    <script type="text/javascript">
        function inheritObject(o)
        {
            function F(){};
            F.prototype = o;
            return new F();
        }
    
    
        var book =
            {
                name: "js book",
                alikeBook: ["css", "book", "html"]
            };
        var newbook = inheritObject(book);
        newbook.name = "newbook";
        newbook.alikeBook.push("newbook book");
    
        var obook = inheritObject(book);
        obook.name = "obook";
        obook.alikeBook.push("obook book");
    
        console.log(newbook.name);
        console.log(newbook.alikeBook);
    
        console.log(obook.name);
        console.log(obook.alikeBook);
      
    
        console.log(book.name);
        console.log(book.alikeBook);
    
    
    </script>
    View Code

      寄生式继承:是对原型式继承的封装

      寄生组合式继承:写到这,我突然发现,ES6 对继承已经做了封装,思想共统一。

           

           

  • 相关阅读:
    Ural 2040 Palindromes and Super Abilities 2
    BZOJ3676: [Apio2014]回文串
    HDU3068 最长回文
    [USACO06DEC] Milk Patterns
    hdu 6200 mustedge mustedge mustedge(dfs序+树状数组+并查集)
    hdu 4511 小明系列故事——女友的考验(AC自动机+dp)
    hdu 5129 Yong Zheng's Death(AC自动机fail树的应用)
    poj 1991 Turning in Homework(贪心+区间dp)
    hdu 4776 Ants(trie+优先队列)
    hdu 4775 Infinite Go(并查集模拟)
  • 原文地址:https://www.cnblogs.com/sunchong/p/8116567.html
Copyright © 2011-2022 走看看