您好,登錄后才能下訂單哦!
本文實例講述了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程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。