tangram.js库实现js类的方式实例分析


Posted in Javascript onJanuary 06, 2018

本文实例讲述了tangram.js库实现js类的方式。分享给大家供大家参考,具体如下:

前面一篇https://3water.com/article/25781.htm对tangram.js库做了较为详细的介绍,这里结合实例分析一下tangram.js库实现js类的方式。代码如下:

/*
 * Tangram
 * Copyright 2010 Baidu Inc. All rights reserved.
 *
 * @author: meizz
 * @namespace: baidu.lang.createClass
 * @version: 1.6.0
 */
///import baidu.lang;
///import baidu.lang.Class;
///import baidu.lang.Event;
/**
 * 创建一个类,包括创造类的构造器、继承基类Class
 * @name baidu.lang.createClass
 * @function
 * @grammar baidu.lang.createClass(constructor[, options])
 * @param {Function} constructor 类的构造器函数
 * @param {Object} [options]
 * @config {string} [type] 类名
 * @config {Function} [superClass] 父类,默认为baidu.lang.Class
 * @version 1.2
 * @remark
 *
      使用createClass能方便的创建一个带有继承关系的类。同时会为返回的类对象添加extend方法,使用obj.extend({});可以方便的扩展原型链上的方法和属性
 * @see baidu.lang.Class,baidu.lang.inherits
 *
 * @returns {Object} 一个类对象
 */
baidu.lang.createClass = /**@function*/function(constructor, options) {
  options = options || {};
  var superClass = options.superClass || baidu.lang.Class;
  // 创建新类的真构造器函数
  var fn = function(){
    var me = this;
    // 20101030 某类在添加该属性控制时,guid将不在全局instances里控制
    options.decontrolled && (me.__decontrolled = true);
    // 继承父类的构造器
    superClass.apply(me, arguments);
    // 全局配置
    for (i in fn.options) me[i] = fn.options[i];
    constructor.apply(me, arguments);
    for (var i=0, reg=fn["\x06r"]; reg && i<reg.length; i++) {
      reg[i].apply(me, arguments);
    }
  };
  // [TODO delete 2013] 放置全局配置,这个全局配置可以直接写到类里面
  fn.options = options.options || {};
  var C = function(){},
    cp = constructor.prototype;
  C.prototype = superClass.prototype;
  // 继承父类的原型(prototype)链
  var fp = fn.prototype = new C();
  // 继承传参进来的构造器的 prototype 不会丢
  for (var i in cp) fp[i] = cp[i];
  // 20111122 原className参数改名为type
  var type = options.className || options.type;
  typeof type == "string" && (fp.__type = type);
  // 修正这种继承方式带来的 constructor 混乱的问题
  fp.constructor = cp.constructor;
  // 给类扩展出一个静态方法,以代替 baidu.object.extend()
  fn.extend = function(json){
    for (var i in json) {
      fn.prototype[i] = json[i];
    }
    return fn; // 这个静态方法也返回类对象本身
  };
  return fn;
};

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

Javascript 相关文章推荐
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
在html页面上拖放移动标签
Jan 08 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
Feb 19 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
Sep 02 Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 Javascript
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 Javascript
Bootstrap如何激活导航状态
Mar 22 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
JS使用正则表达式实现常用的表单验证功能分析
Apr 30 Javascript
JavaScript寄生组合式继承实例详解
Jan 06 #Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 #jQuery
JS实现非首屏图片延迟加载的示例
Jan 06 #Javascript
jQuery中库的引用方法
Jan 06 #jQuery
基于JavaScript中标识符的命名规则介绍
Jan 06 #Javascript
js生成word中图片处理方法
Jan 06 #Javascript
详解webpack中的hash、chunkhash、contenthash区别
Jan 05 #Javascript
You might like
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
js轮播图代码分享
2016/07/14 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
Python Property属性的2种用法
2015/06/21 Python
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
最小二乘法及其python实现详解
2020/02/24 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
父亲追悼会答谢词
2014/01/17 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
项目合作协议书范本
2014/04/16 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python