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 相关文章推荐
JavaScript 实现??打印?理
Apr 28 Javascript
JavaScript 组件之旅(一)分析和设计
Oct 28 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
Dec 17 Javascript
javascript:;与javascript:void(0)使用介绍
Jun 05 Javascript
jQuery使用ajaxSubmit()提交表单示例
Apr 04 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
Oct 17 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
input框中的name和id的区别
Nov 16 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 Javascript
微信小程序搭建自己的Https服务器
May 02 Javascript
js实现旋转的星空效果
Nov 01 Javascript
webpack4从0搭建组件库的实现
Nov 29 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
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
php简单防盗链实现方法
2015/07/29 PHP
php实现微信模板消息推送
2018/03/30 PHP
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
几个人围成一圈的问题
2013/09/26 面试题
2014年小学语文工作总结
2014/12/20 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
深入浅析React中diff算法
2021/05/19 Javascript
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers