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 NaN和Infinity特殊值 [译]
Sep 20 Javascript
自动最大化窗口的Javascript代码
May 22 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
Apr 15 Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
jquery点赞功能实现代码 点个赞吧!
May 29 jQuery
js原生代码实现轮播图的实例讲解
Jul 28 Javascript
Javascript中parseInt的正确使用方式
Oct 17 Javascript
JavaScript中的"=、==、==="区别讲解
Jan 22 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
Mar 14 Javascript
jQuery操作cookie的示例代码
Jun 05 jQuery
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 array_multisort() 函数的深入解析
2013/06/20 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
php微信开发之图片回复功能
2018/06/14 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
python解析json实例方法
2013/11/19 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
什么是Web Service?
2012/07/25 面试题
UNIX文件系统分类
2014/11/11 面试题
医科大学毕业生自荐信
2014/02/03 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
工程部部长岗位职责
2015/02/12 职场文书
学习保证书100字
2015/02/26 职场文书
通讯稿格式及范文
2015/07/22 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python