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 相关文章推荐
Javascript和Ajax中文乱码吐血版解决方案
Dec 21 Javascript
jQuery 工具函数学习资料
Apr 29 Javascript
基于js disabled="false"不起作用的解决办法
Jun 26 Javascript
Jquery中find与each方法用法实例
Feb 04 Javascript
Angularjs制作简单的路由功能demo
Apr 14 Javascript
多个js毫秒倒计时同时进行效果
Jan 05 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
Sort()函数的多种用法
Mar 20 Javascript
Vue.js实现的计算器功能完整示例
Jul 11 Javascript
zepto.js 实时监听输入框的方法
Dec 04 Javascript
vuex实现的简单购物车功能示例
Feb 13 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
Sep 05 Javascript
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
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
PHP静态成员变量
2017/02/14 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
js表格分页实现代码
2009/09/18 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
node.js通过url读取文件
2020/10/16 Javascript
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
String和StringBuffer的区别
2015/08/13 面试题
C++:局部变量能否和全局变量重名
2014/03/03 面试题
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
爱国卫生月实施方案
2014/02/21 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
毕业生学校组织意见
2015/06/04 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang