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);
  • 相关阅读:
    iOS开发网络篇—GET请求和POST请求
    iOS开发网络篇—HTTP协议
    iOS开发网络篇—搭建本地服务器
    iOS开发网络篇—网络编程基础
    编程生涯
    使用NSURLSession实现断点续传
    定义设置颜色的RGB值的宏
    IB_DESIGNABLE的使用
    java文件和目录的增删复制
    Android离线语音识别(PocketSphinx)
  • 原文地址:https://www.cnblogs.com/byronvis/p/4515145.html
Copyright © 2011-2022 走看看