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

    1、类式继承

    //使subclass继承superclass

    function extend(subclass, superclass){
        function F() {};
        F.prototype = superclass.prototype;
        subclass.prototype = new F();//类式继承
        subclass.prototype.constructor = subclass;
        
        subclass.superclass = superclass.prototype;
        if (superclass.prototype.constructor == Object.prototype.constructor){
            superclass.prototype.constructor = superclass;
        }
    }

    2、原型式继承

    function clone(object) {

        function F() {};

        F.prototype = object.prototype;//原型继承

        return new F();

     }

    3、掺元类

    //用givingclass类来扩充receivingclass类

    function augment(receivingclass, givingclass) {

        if (arguments[2]) {

            for (var i = 2, len = arguments.length; i < len; i += 1) {

                receivingclass.prototype[arguments[i]] = givingclass.prototype[arguments[i]];

            }  

        } else {

            for (methodName in givingclass.prototype) {

                if (!receivingclass.prototype[methodName]) {

                    receivingclass.prototype[methodName] = givingclass.prototype[methodName];

                }

             }

        }

    }

    function extend(subclass, superclass){
    function F() {};
    F.prototype = superclass.prototype;
    subclass.prototype = new F();
    subclass.prototype.constructor = subclass;


    subclass.superclass = superclass.prototype;
    if (superclass.prototype.constructor == Object.prototype.constructor){
    superclass.prototype.constructor = superclass;
    }
    }function extend(subclass, superclass){
    function F() {};
    F.prototype = superclass.prototype;
    subclass.prototype = new F();
    subclass.prototype.constructor = subclass;


    subclass.superclass = superclass.prototype;
    if (superclass.prototype.constructor == Object.prototype.constructor){
    superclass.prototype.constructor = superclass;
    }
    }
    function extend(subclass, superclass){
    function F() {};
    F.prototype = superclass.prototype;
    subclass.prototype = new F();
    subclass.prototype.constructor = subclass;


    subclass.superclass = superclass.prototype;
    if (superclass.prototype.constructor == Object.prototype.constructor){
    superclass.prototype.constructor = superclass;
    }
    }
    function extend(subclass, superclass){
    function F() {};
    F.prototype = superclass.prototype;
    subclass.prototype = new F();
    subclass.prototype.constructor = subclass;


    subclass.superclass = superclass.prototype;
    if (superclass.prototype.constructor == Object.prototype.constructor){
    superclass.prototype.constructor = superclass;
    }
    }
  • 相关阅读:
    有效的形成传感器(执行器)的控制方式
    QT进行多传感器(执行器)的编程框架
    Pytorch 分割模型构建和训练【直播】2019 年县域农业大脑AI挑战赛---(四)模型构建和网络训练
    9月份以前还是深入了解各个技术原理吧
    位操作基础篇
    实现一个简单实用的动态加载上千条目的UGUI模块
    C++题目汇总
    Leetcode 92. Reverse Linked List II
    Leetcode Reverse Linked List
    Lintcode Recover Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/wuzy/p/2993719.html
Copyright © 2011-2022 走看看