您好,登錄后才能下訂單哦!
本文實例講述了tangram.js庫實現(xiàn)js類的方式。分享給大家供大家參考,具體如下:
前面一篇https://www.jb51.net/article/25781.htm對tangram.js庫做了較為詳細的介紹,這里結(jié)合實例分析一下tangram.js庫實現(xiàn)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; /** * 創(chuàng)建一個類,包括創(chuàng)造類的構(gòu)造器、繼承基類Class * @name baidu.lang.createClass * @function * @grammar baidu.lang.createClass(constructor[, options]) * @param {Function} constructor 類的構(gòu)造器函數(shù) * @param {Object} [options] * @config {string} [type] 類名 * @config {Function} [superClass] 父類,默認為baidu.lang.Class * @version 1.2 * @remark * 使用createClass能方便的創(chuàng)建一個帶有繼承關(guān)系的類。同時會為返回的類對象添加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; // 創(chuàng)建新類的真構(gòu)造器函數(shù) var fn = function(){ var me = this; // 20101030 某類在添加該屬性控制時,guid將不在全局instances里控制 options.decontrolled && (me.__decontrolled = true); // 繼承父類的構(gòu)造器 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(); // 繼承傳參進來的構(gòu)造器的 prototype 不會丟 for (var i in cp) fp[i] = cp[i]; // 20111122 原className參數(shù)改名為type var type = options.className || options.type; typeof type == "string" && (fp.__type = type); // 修正這種繼承方式帶來的 constructor 混亂的問題 fp.constructor = cp.constructor; // 給類擴展出一個靜態(tài)方法,以代替 baidu.object.extend() fn.extend = function(json){ for (var i in json) { fn.prototype[i] = json[i]; } return fn; // 這個靜態(tài)方法也返回類對象本身 }; return fn; };
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。