JavaScript类继承及实例化的方法


Posted in Javascript onJuly 25, 2015

本文实例讲述了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 相关文章推荐
jQuery 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
javascript学习笔记(十四) window对象使用介绍
Jun 20 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
Mar 31 Javascript
javascript实现的固定位置悬浮窗口实例
Apr 30 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
jQuery实现手机上输入后隐藏键盘功能
Jan 04 Javascript
Vue中的组件及路由使用实例代码详解
May 22 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
基于JS实现视频上传显示进度条
May 12 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
JavaScript对Cookie进行读写操作实例
Jul 25 #Javascript
javascript去掉代码里面的注释
Jul 24 #Javascript
Jquery简单分页实现方法
Jul 24 #Javascript
javascript实现禁止鼠标滚轮事件
Jul 24 #Javascript
Css3制作变形与动画效果
Jul 24 #Javascript
四种参数传递的形式——URL,超链接,js,form表单
Jul 24 #Javascript
基于JS实现的倒计时程序实例
Jul 24 #Javascript
You might like
ASP知识讲座四
2006/10/09 PHP
也谈php网站在线人数统计
2008/04/09 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
小程序实现多选框功能
2018/10/30 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
基于javascript的拖拽类封装详解
2019/04/19 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
社区学习雷锋活动总结
2014/04/25 职场文书
销售队伍口号
2014/06/11 职场文书
公证委托书标准格式
2014/09/11 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
详解Python为什么不用设计模式
2021/06/24 Python
Redis中一个String类型引发的惨案
2021/07/25 Redis