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 相关文章推荐
发现的以前不知道的函数
Sep 19 Javascript
基于jquery的direction图片渐变动画效果
May 24 Javascript
JavaScript继承方式实例
Oct 29 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
May 08 Javascript
详解JavaScript中循环控制语句的用法
Jun 03 Javascript
基于jQuery实现的扇形定时器附源码下载
Oct 20 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
angular1配合gulp和bower的使用教程
Jan 19 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
layer父页获取弹出层输入框里面的值方法
Sep 02 Javascript
layui select 禁止点击的实现方法
Sep 05 Javascript
通过实例解析json与jsonp原理及使用方法
Sep 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 函数中使用static的说明
2012/06/01 PHP
php数组去重实例及分析
2013/11/26 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
Python学习笔记_数据排序方法
2014/05/22 Python
python字符串排序方法
2014/08/29 Python
Python pickle模块用法实例分析
2015/05/27 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python之文字转图片方法
2018/05/10 Python
python游戏地图最短路径求解
2019/01/16 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫
git stash(储藏)的用法总结
2022/06/25 Servers