前端开发

 首页 > 前端开发 > javascript > JavaScript类继承及实例化的方法

JavaScript类继承及实例化的方法

分享到:
【字体:
导读:
          本文讲解JavaScript类继承及实例化的方法 (function(){varClass={//扩展类create:function(aBaseClass,aClassDefine){var$class=function(){for(varmemberinaClassDefine){this[member]=aClassDefine[member];}if(undefined===typeofaClassD...

本文讲解JavaScript类继承及实例化的方法

(function(){
  var Class = {
    //扩展类
    create: function(aBaseClass, aClassDefine){
      var $class = function(){
        for(var member in aClassDefine){
          this[member] = aClassDefine[member];
        }
        if('undefined'===typeof aClassDefine.initialize){
          this.initialize = function(){};
        }
      };
      if('function' ===typeof aBaseClass){        
        $class.prototype = new aBaseClass();        
      }else if('object' ===typeof aBaseClass){
        $class.prototype = aBaseClass;
      }    
      return $class;
    },
    //实例化类
    new: function(jclass,args){
      var jclass = new jclass();
      if(jclass.initialize){
        jclass.initialize.apply(jclass, args);
      }
      return jclass;
    }
  };
  //export
  window.Class = Class;
})();

示例:

//基类对象或函数
var obj = {
  name: 'BaseName',
  init: function(){
    //...  
  },
  //...
};
var fun = function(){
  this.name = '';
  var init = function(){
    //..  .
  };
  var getName = function(){
    return this.name;
  },
  var setName = function(name){
    this.name = name;
    return this;//链式操作支持
  },
  //...
};
//从Object继承
var class_frome_obj = Class.create(obj,{
  initialize: function(){
    //构造函数
  },
  getName: function(){
    return this.name;
  },
  setName: function(name){
    this.name = name;
    return this;//链式操作支持
  },
  //...
});
//从Function继承
var class_frome_fun = Class.create(fun,{
  initialize: function(){
    //构造函数
  },
  //...
});
//从空对生成基类
var class_frome_base = Class.create({},{
  initialize: function(){
    //构造函数
  },
  //...
});
//实例化
var get_class_frome_obj = Class.new(class_frome_obj,[arg1,arg2,...]);
var get_class_frome_fun = Class.new(class_frome_fun,[arg1,arg2,...]);
var name1 = get_class_frome_obj.getName();
//console.log(name1);//BaseName
var name2 = get_class_frome_obj.setName('NewName').getName();
//console.log(name2);//NewName


分享到:
javascript单例模式的简单实现方法
本文讲解javascript单例模式的简单实现方法 function SingeInstance(){   if(!SingeInstance._instance)     SingeInstance._instance=this;   return SingeInstance._instance; } var obj1=new SingeInstance(); var obj2=new SingeInstance(); console.log(obj1===obj2);   //true
javascript的readonly和disabled属性的区...
本文讲解javascript的readonly和disabled属性的区别 标签的readonly和disabled属性的区别: 在表单元素中,readonly和disable有类似之处,因为它们都可以将一些表单元素设置为"不可用"状态,当然它们之间的区别是巨大的,下面就介绍一下这个两个属性有哪些区别,希望能够给需要的朋友带来一定的帮助。 两个属性不同点列举: 1...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……