zoukankan      html  css  js  c++  java
  • js之类式继承,原型继承,掺元类

    类式继承

    //extend function
    function extend(subClass,superClass){
      var F=function(){};
      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;
      }
    }
    //class Person function Person(){   ... } //class Author function Author(){ Author.superclass.constructor.call(); } extend(Author,Person) Author.prototype.sayName=function(){ ... };

    原型继承

    //clone function
    function clone(obj){
           var F=function(){};
           F.prototype=  obj;
           return new F();  
    }
    
    //class Person
    var Person{
            name:'Byronvis',
            sayName:function(){
                      alert(this.name);
            }
    }
    
    //class Author
    var Author=clone(Person);
    Author.age='32';
    Author.sayAge=function(){
         alert(this.age);
    }
    
    var someObj=clone(Author);
    someObj.name='Elvis';
    someObj.age=’23'

    掺元类

    //augment function
    function augment(receivingClass,givingClass){
      if(arguments[2]){
        for(var i = 2,len = arguments.length;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];
          }
        }
      }
    }
    
    //Mixin class
    var Mixin = function(){};
    Mixin.prototype = {
      serialize:function(){
        var output = [];
        for(key in this){
          output.push(key + ':' + this[key]);
        }
        return output.join(',');
      }
    };
    
    augment(Author,Mixin);
  • 相关阅读:
    shell:定时任务crontab
    shell:采集进程的cpu和内存利用率_随手记1
    临时记录
    python:numpy库和matplotlib库
    python:urllib:HTTPResponse对象的用法
    美国亚马逊图片打不开
    互联网协议
    range 和 xrange
    国内服务器的端口开放问题
    Mac上设置Chrome跨域
  • 原文地址:https://www.cnblogs.com/byronvis/p/4515145.html
Copyright © 2011-2022 走看看