zoukankan      html  css  js  c++  java
  • js原生设计模式——2面向对象编程之继承—原型继承(类式继承的封装)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>prototypeInherit</title>
        <script type="text/javascript">
        //原型式继承:实质上就是类式继承的函数封装(但有缺陷)
        function inheritObject(obj){
            //声明一个过渡函数对象
            function _f(){}
            _f.prototype = obj;
            return new _f();
        }
        var book = {
            name:'js book',
            alike:['css','html']
        }
        var newbook = inheritObject(book);
        newbook.name = 'ajax book';
        console.log(newbook.name);      //'ajax book'
        newbook.alike.push('js');
        console.log(newbook.alike);     //["css", "html", "js"]


        var combook = inheritObject(book);
        console.log(combook.name);      //'js book'
        console.log(combook.alike);     //["css", "html", "js"]newbook中修改加入的'js'元素,combook中也共享了
        //小结:原型继承中——父对象的直接属性被分别拷贝,数组类结构属性会被共用。(推荐使用类式继承,继承的比较完美,每个实例都是独立对象,又都继承了父类的直接属性和原型prototype属性)
        //本例已经通过验证
        </script>
    </head>
    <body>
        
    </body>
    </html>

  • 相关阅读:
    Spring中依赖注入的四种方式
    使用 EasyMock 更轻松地进行测试
    HDU2196 Computer(树形DP)
    BZOJ2125: 最短路(圆方树)
    虚树入门
    BZOJ2286: [Sdoi2011]消耗战(虚树/树形DP)
    Codeforces Round #487 (Div. 2)
    Educational Codeforces Round 45 (Rated for Div. 2)
    BZOJ3675: [Apio2014]序列分割(斜率优化)
    BZOJ2761: [JLOI2011]不重复数字(map)
  • 原文地址:https://www.cnblogs.com/koleyang/p/4936590.html
Copyright © 2011-2022 走看看