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方法和技巧大全
Dec 27 Javascript
javascript String 对象
Apr 25 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
浅析javascript中function 的 length 属性
May 27 Javascript
跟我学习javascript的严格模式
Nov 16 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
Dec 04 Javascript
JS及PHP代码编写八大排序算法
Jul 12 Javascript
详解在Vue中如何使用axios跨域访问数据
Jul 07 Javascript
JS求Number类型数组中最大元素方法
Apr 08 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 Javascript
JavaScript实现图片伪异步上传过程解析
Apr 10 Javascript
js调用网络摄像头的方法
Dec 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
js和php邮箱地址验证的实现方法
2014/01/09 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python将文本转换成图片输出的方法
2015/04/28 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
如何写新闻稿
2015/07/18 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
iPhone13再次曝光
2021/04/15 数码科技
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL
python 闭包函数详细介绍
2022/04/19 Python