tangram.js庫實(shí)現(xiàn)js類的方式實(shí)例分析
本文實(shí)例講述了tangram.js庫實(shí)現(xiàn)js類的方式。分享給大家供大家參考,具體如下:
前面一篇http://www.dbjr.com.cn/article/25781.htm對tangram.js庫做了較為詳細(xì)的介紹,這里結(jié)合實(shí)例分析一下tangram.js庫實(shí)現(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] 父類,默認(rèn)為baidu.lang.Class * @version 1.2 * @remark * 使用createClass能方便的創(chuàng)建一個帶有繼承關(guān)系的類。同時(shí)會為返回的類對象添加extend方法,使用obj.extend({});可以方便的擴(kuò)展原型鏈上的方法和屬性 * @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 某類在添加該屬性控制時(shí),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(); // 繼承傳參進(jìn)來的構(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; // 給類擴(kuò)展出一個靜態(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é)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
- 圍觀tangram js庫
- tangram框架響應(yīng)式加載圖片方法
- js類式繼承與原型式繼承詳解
- js類式繼承的具體實(shí)現(xiàn)方法
- js中繼承的幾種用法總結(jié)(apply,call,prototype)
- JavaScript是如何實(shí)現(xiàn)繼承的(六種方式)
- 深入了解javascript中的prototype與繼承
- Javascript基于對象三大特性(封裝性、繼承性、多態(tài)性)
- javascript的函數(shù)、創(chuàng)建對象、封裝、屬性和方法、繼承
- 深入理解JavaScript是如何實(shí)現(xiàn)繼承的
- JavaScript繼承基礎(chǔ)講解(原型鏈、借用構(gòu)造函數(shù)、混合模式、原型式繼承、寄生式繼承、寄生組合式繼承)
相關(guān)文章
獲取今天,昨天,本周,上周,本月,上月時(shí)間(實(shí)例分享)
本篇文章主要分享了獲取今天,昨天,本周,上周,本月,上月時(shí)間實(shí)例代碼,具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01JavaScript 計(jì)算笛卡爾積實(shí)例詳解
這篇文章主要介紹了JavaScript 計(jì)算笛卡爾積實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼,需要的朋友可以參考下2016-12-12JavaScript從數(shù)組的indexOf()深入之Object的Property機(jī)制
這篇文章主要介紹了JavaScript從數(shù)組的indexOf()深入——Object的Property機(jī)制的相關(guān)資料,需要的朋友可以參考下2016-05-05JS highcharts動態(tài)柱狀圖原理及實(shí)現(xiàn)
這篇文章主要介紹了JS highcharts動態(tài)柱狀圖原理及實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10