zoukankan      html  css  js  c++  java
  • javascript设计模式5

    子类引用父类

    function extend(subClass,superClass){
        var F=function(){};
        F.prototype=superClass.prototype;
        subClass.prototype=new F();
        subClass.prototype.constructor=subClass;
        subClass.superClass=superClass.prototype;
        if(subClass.prototype.constructor==Object.prototype.constructor){
            superClass.prototype.constructor=superClass;
        }
    }

    原型式继承

    var Person={
        name:'default name',
        getName:function(){
            return this.name;
        }
    };

    用工厂模式

    var CompoundObject={};
    CompoundObject.string1='default value',
    CompoundObject.createChildObject=function(){
        return{
            bool:true,
            num:10
        }
    };
    CompoundObject.childObject=CompoundObject.createChildObject();
    var compoundObjectClone=clone(CompoundObject);
    compoundObjectClone.childObject=CompoundObject.createChildObject();
    compoundObjectClone.childObject.num=5;

    例子中的clone函数

    function clone(object){
        function F(){}
        F.prototype=object;
        return new F;
    }

    掺元类:通过扩充的方式共享函数

    var Mixin=function(){};
    Mixin.prototype={
        serialize:function(){
            var output=[];
            for(key in this){
                output.push(key+':'+this[key]);
            }
            return output.join(',');
        }
    }
    function augment(receivingClass,givingClass){
        if(arguments[2]){
            for(var i=2,len=arguments.length;i<len;i++){
                receivingClass.prototype[arguments[i]]=givingClass.prototype[arguments[i]];
            }
        }
        else{
            for(methodName in givingClass.prototype){
                if(!receivingClass.prototype[methodName]){
                    receivingClass.prototype[methodName]=givingClass.prototype[methodName];
                }
            }
        }
    }
  • 相关阅读:
    minixml3.1库的使用
    linux coredump及函数栈空间大小分析
    linx 设备名字来由 sd sr sg st
    gcc 遇到过的语法问题
    I帧、B帧、P帧、NALU类型
    linux grub 使用
    结构体sockadrr、sockaddr_in、in_addr的定义
    linux c log 日志接口
    关于32位/64位版本头文件的重要
    汇编指令缩写
  • 原文地址:https://www.cnblogs.com/sdgjytu/p/4214336.html
Copyright © 2011-2022 走看看