中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

tangram.js庫實現js類的方式實例分析

發布時間:2020-10-03 20:02:58 來源:腳本之家 閱讀:175 作者:qq_26222859 欄目:web開發

本文實例講述了tangram.js庫實現js類的方式。分享給大家供大家參考,具體如下:

前面一篇https://www.jb51.net/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錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平乐县| 宣武区| 年辖:市辖区| 合肥市| 汝州市| 永和县| 东丰县| 永昌县| 深圳市| 河曲县| 罗定市| 肃宁县| 浦东新区| 特克斯县| 玉屏| 涟水县| 濮阳市| 云龙县| 津南区| 宁城县| 满洲里市| 七台河市| 芦溪县| 龙江县| 吴桥县| 乌什县| 峨眉山市| 南华县| 芜湖市| 西乌珠穆沁旗| 公主岭市| 额尔古纳市| 博乐市| 化州市| 通河县| 宁明县| 宿州市| 仁布县| 伊春市| 湖南省| 泾川县|