tangram.js庫實現(xiàn)js類的方式實例分析
本文實例講述了tangram.js庫實現(xiàn)js類的方式。分享給大家供大家參考,具體如下:
前面一篇http://www.fzitv.net/article/25781.htm對tangram.js庫做了較為詳細(xì)的介紹,這里結(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] 父類,默認(rèn)為baidu.lang.Class
* @version 1.2
* @remark
*
使用createClass能方便的創(chuàng)建一個帶有繼承關(guān)系的類。同時會為返回的類對象添加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 某類在添加該屬性控制時,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é)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- 圍觀tangram js庫
- tangram框架響應(yīng)式加載圖片方法
- js類式繼承與原型式繼承詳解
- js類式繼承的具體實現(xiàn)方法
- js中繼承的幾種用法總結(jié)(apply,call,prototype)
- JavaScript是如何實現(xiàn)繼承的(六種方式)
- 深入了解javascript中的prototype與繼承
- Javascript基于對象三大特性(封裝性、繼承性、多態(tài)性)
- javascript的函數(shù)、創(chuàng)建對象、封裝、屬性和方法、繼承
- 深入理解JavaScript是如何實現(xiàn)繼承的
- JavaScript繼承基礎(chǔ)講解(原型鏈、借用構(gòu)造函數(shù)、混合模式、原型式繼承、寄生式繼承、寄生組合式繼承)
相關(guān)文章
用Javascript檢查Adobe PDF插件是否安裝的實現(xiàn)代碼
用Javascript檢查Adobe PDF插件是否安裝的代碼2009-12-12
JavaScript判斷瀏覽器對CSS3屬性是否支持的多種方法
其實在使用css3的一些屬性時,為了兼顧低端瀏覽器對CSS3的不友好性,往往需要知道某些瀏覽器是否支持要使用的CSS3屬性,以此來做向下適配。比如常見的CSS3動畫就很有必要檢測瀏覽器是否支持。下面本文就分享了幾種方法,有需要的朋友們可以參考借鑒。2016-11-11
TypeScript實現(xiàn)字符串轉(zhuǎn)樹結(jié)構(gòu)的方法詳解
有一個多行字符串,每行開頭會用空格來表示它的層級關(guān)系,每間隔一層它的空格總數(shù)為2,如何將它轉(zhuǎn)為json格式的樹型數(shù)據(jù)?本文就跟大家分享下這個算法2022-09-09
Qt利用布局widget和ScrollArea實現(xiàn)抽屜效果(實例代碼)
這篇文章主要介紹了Qt利用布局,widget和ScrollArea實現(xiàn)抽屜效果,本文通過實例代碼圖文展示給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07

