JS仿Base.js实现的继承示例


Posted in Javascript onApril 07, 2017

本文实例讲述了JS仿Base.js实现的继承。分享给大家供大家参考,具体如下:

var Klass = function() {};
Klass.extendClass = (function() {
  var F = function() {};
  return function(C, P) {
    F.prototype = P.prototype;
    C.prototype = new F();
    C.uper = P.prototype;
    C.prototype.constructor = C;
  };
})();
Klass.extend = function(props) {
  var _slice = Array.prototype.slice;
  var Glass = function() {
    /*if (Glass.uper && Glass.uper.hasOwnProperty("init")) {
      Glass.uper.init.apply(this, _slice.call(arguments))
    }*/
    if (Glass.prototype.hasOwnProperty("init")) {
      Glass.prototype.init.apply(this, _slice.call(arguments));
    }
  };
  Klass.extendClass(Glass, this);
  Glass.extend = this.extend;
  for (var key in props) {
    if (props.hasOwnProperty(key)) {
      Glass.prototype[key] = props[key];
    }
  }
  return Glass;
};

example:

var A = Klass.extend({
    init: function(name) {
      this.name = name;
      console.log('A constructor is running!');
    },
    getName: function() {
      return this.name;
    }
});
var B = A.extend({
    init: function(name) {
      this.name = name;
      console.log('B constructor is running!');
    },
    getName: function() {
      return this.name;
    },
    a: 'b'
});
var C = B.extend({
    init: function(name) {
      console.log('C constructor is running!');
    },
    c: 'c',
    getName: function() {
      var name = C.uper.getName.call(this);
      return 'Hi, I\'m' + this.name;
    }
});
var c1 = new C('zlf');
console.log(c1.getName());

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JS处理VBArray的函数使用说明
May 11 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
Jul 13 Javascript
JavaScript将相对地址转换为绝对地址示例代码
Jul 19 Javascript
通过jquery 获取URL参数并进行转码
Aug 18 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
jQuery实现链接的title快速出现的方法
Feb 20 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
Apr 14 jQuery
AngularJS表单验证功能分析
May 26 Javascript
详解react使用react-bootstrap当轮子造车
Aug 15 Javascript
js中的数组对象排序分析
Dec 11 Javascript
爬虫利器Puppeteer实战
Jan 09 Javascript
Javascript实现秒表计时游戏
May 27 Javascript
vue-hook-form使用详解
Apr 07 #Javascript
ES6实现的遍历目录函数示例
Apr 07 #Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 #Javascript
JS实现css hover操作的方法示例
Apr 07 #Javascript
微信小程序 chooseImage选择图片或者拍照
Apr 07 #Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 #Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
Apr 07 #jQuery
You might like
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Django URL传递参数的方法总结
2016/08/28 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Django 返回json数据的实现示例
2020/03/05 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
公司门卫的岗位职责
2014/02/19 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
2015年维修工作总结
2015/04/25 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android