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

发布时间 - 2026-01-11 00:33:23    点击率:

本文实例讲述了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错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

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


# JS  # Base.js  # 继承  # Prototype使用指南之base.js  # js中继承的几种用法总结(apply  # call  # prototype)  # js的2种继承方式详解  # 实现JavaScript中继承的三种方式  # JavaScript是如何实现继承的(六种方式)  # 前端开发必须知道的JS之原型和继承  # JS继承--原型链继承和类式继承  # Extjs学习笔记之八 继承和事件基础  # Javascript 继承机制的实现  # js实现继承的5种方式  # javascript的函数、创建对象、封装、属性和方法、继承  # 深入理解JavaScript是如何实现继承的  # 用JavaScript实现单继承和多继承的简单方法  # 相关内容  # 遍历  # 感兴趣  # 数据结构  # 给大家  # 更多关于  # 所述  # 程序设计  # 面向对象  # 讲述了  # extendClass  # return  # Klass  # function  # constructor  # extend  # prototype  # uper  # var  # Base 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 北京网站制作的公司有哪些,北京白云观官方网站?  Laravel如何实现文件上传和存储?(本地与S3配置)  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel如何实现API资源集合?(Resource Collection教程)  linux top下的 minerd 木马清除方法  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel如何创建自定义Artisan命令?(代码示例)  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Android仿QQ列表左滑删除操作  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何生成腾讯云建站专用兑换码?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何为不同团队 ID 动态生成多个非值班状态按钮  Laravel怎么实现模型属性的自动加密  如何打造高效商业网站?建站目的决定转化率  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Python文本处理实践_日志清洗解析【指导】  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  微信小程序 input输入框控件详解及实例(多种示例)  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Laravel中的withCount方法怎么高效统计关联模型数量  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  如何快速重置建站主机并恢复默认配置?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel如何使用withoutEvents方法临时禁用模型事件  iOS正则表达式验证手机号、邮箱、身份证号等  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Bootstrap整体框架之CSS12栅格系统  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  教学论文网站制作软件有哪些,写论文用什么软件 ?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel如何使用Eloquent进行子查询  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  JS去除重复并统计数量的实现方法  详解Oracle修改字段类型方法总结  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何在万网ECS上快速搭建专属网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?