tangram.js实现js的类的方式
来源:互联网 发布:apache ant zip.jar 编辑:程序博客网 时间:2024/06/05 16:54
/*
* Tangram
* Copyright 2010 Baidu Inc. All rights reserved.
*
* @author: meizz
* @namespace: baidu.lang.createClass
* @version: 1.6.0
* @modify: 2011.11.24 meizz
*/
///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;
};
- tangram.js实现js的类的方式
- klass实现js的类的方式
- Mootools.js实现js的类的方式
- js的继承实现方式
- js继承的实现方式
- JS继承的实现方式
- JS继承的实现方式
- js异步的实现方式
- JS实现打印的方式
- JS继承的实现方式
- JS继承的实现方式
- JS继承的实现方式
- JS继承的实现方式
- js中继承的实现方式
- JS实现Trim()的最佳方式
- js实现继承的多种方式
- js实现继承的5种方式
- js实现继承的5种方式
- CentOS配置防火墙
- json_encode()与json_decode()在php中的应用
- hdu 6170 Two strings
- 读入挂
- Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderListener
- tangram.js实现js的类的方式
- 关于weblogic连接池爆满的原因和处理
- Vegas的安装激活教程
- [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第2讲(四大界面之间的跳转与玩家飞机的移动)
- hdu 1525 Euclid's Game
- (POJ
- [JAVA] 生成MD5 java.security.MessageDigest BUG
- SQLServer Stuff函数的用法
- HttpServletRequest对象