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 相关文章推荐
js输出列表实现代码
Sep 12 Javascript
Js 弹出框口并返回值的两种常用方法
Dec 30 Javascript
用js实现控件的隐藏及style.visibility的使用
Jun 14 Javascript
将Datatable转化成json发送前台实现思路
Sep 06 Javascript
Jquery validation remote 验证的缓存问题解决方法
Mar 25 Javascript
jQuery里filter()函数与find()函数用法分析
Jun 24 Javascript
coffeescript使用的方式汇总
Aug 05 Javascript
jQuery实现下滑菜单导航效果代码
Aug 25 Javascript
Vue学习笔记之表单输入控件绑定
Sep 05 Javascript
详解webpack2+React 实例demo
Sep 11 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
Apr 21 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
Jul 09 jQuery
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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
PHP学习之PHP表达式
2006/10/09 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
js获取域名的方法
2015/01/27 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
python中for语句简单遍历数据的方法
2015/05/07 Python
python实现Decorator模式实例代码
2018/02/09 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
英国在线药房:Express Chemist
2019/03/28 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
食堂个人先进事迹
2014/01/22 职场文书
反四风对照检查材料
2014/09/22 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
如何写好闭幕词
2019/04/02 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
高一作文之暖冬
2019/11/09 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android