X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F01_core%2F11_XClass.js;h=52207a519a1b9bcc6e7669be88166ed9df8c0189;hb=42e0982b02a99c71702ce8cd8740645aefdc8097;hp=815e4c19321ba5c16e84a61986871772b37a507c;hpb=a130cabd01fde8865990a59d849f5d5d08ed2119;p=pettanr%2FclientJs.git
diff --git a/0.6.x/js/01_core/11_XClass.js b/0.6.x/js/01_core/11_XClass.js
index 815e4c1..52207a5 100644
--- a/0.6.x/js/01_core/11_XClass.js
+++ b/0.6.x/js/01_core/11_XClass.js
@@ -27,7 +27,7 @@ var
X_Class_killPrivateFlag = false,
X_Class_traits = null,
X_Class_useObjectCreate = false, // !!Object.create, http://jsperf.com/prototype-vs-object-create-perf
- X_Class_use_proto_ = !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] && !!X.emptyFunction.prototype.__proto__,
+ X_Class_use_proto_ = !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] && !!X_emptyFunction.prototype.__proto__,
// Opera Mobile 12.10 Android11 IS01 ã§ã¯ã©ã¹ã®ã¡ã³ããæ¬ è½ããåé¡ã«ééã__proto__ ã使ããªãã¨åä½,,,
X_Class_CommonMethods =
@@ -37,13 +37,13 @@ X_Class_CommonMethods =
* å
¨ã¦ã®åçã¡ã³ããåé¤ãã¦ãã¤ã³ã¹ã¿ã³ã¹ãç ´æ£ããã
* ã¤ã³ã¹ã¿ã³ã¹ã X.EventDispatcher ã¨ãã®ãµãã¯ã©ã¹ã®å ´åã次ã®åä½ãããã
*
- * - X.Event.BEFORE_KILL_INSTANCE ãçºç«ãããæ»ãå¤ã®ããããã©ã°ã« X.Callback.PREVENT_DEFAULT ãç«ã¤å ´åãç ´æ£ããã£ã³ã»ã«ã X.Event.KILL_INSTANCE_CANCELED ãçºç«ããã
+ *
- X.Event.BEFORE_KILL_INSTANCE ãçºç«ãããæ»ãå¤ã®ããããã©ã°ã« X_Callback_PREVENT_DEFAULT ãç«ã¤å ´åãç ´æ£ããã£ã³ã»ã«ã X.Event.KILL_INSTANCE_CANCELED ãçºç«ããã
*
- ç ´æ£ã«é²ãå ´åã¯ãX.Event.KILL_INSTANCE ãçºç«ããã
*
- dispatch ä¸ã¯ãã¤ã³ã¹ã¿ã³ã¹ã®å
¨ã¦ã® dispatch ãçµäºããã¾ã§å®éã®ç ´æ£ãå¾
ã¤ã
*
- å®éã®ç ´æ£ã§ã¯ãã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã³ãã®åé¤ã«å ãã¦å
¨ã¦ã®ã¤ãã³ããªã¹ãã解é¤ããã
*/
// TODO kill ããã¤ã³ã¹ã¿ã³ã¹ã®ã¤ãã³ããæ®ã£ã¦ããªããï¼ããã¯éçºç¨ã®ã¿
- kill : function(){
+ 'kill' : function(){
var instance = this,
klass = X_Class_getClass( instance ),
def = X_Class_getClassDef( klass ),
@@ -54,10 +54,10 @@ X_Class_CommonMethods =
};
X_Class_killPrivateFlag = false; // instance.kill() å
㧠PrivateInstance.kill() ãé²ããã
- if( this.instanceOf( X.EventDispatcher ) ){
+ if( this[ 'instanceOf' ]( X_EventDispatcher ) ){
if( !def.isPrivate ){
- if( this.dispatch( X_Event.BEFORE_KILL_INSTANCE ) & X.Callback.PREVENT_DEFAULT ){
- this.dispatch( X_Event.KILL_INSTANCE_CANCELED );
+ if( this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE ) & X_Callback_PREVENT_DEFAULT ){
+ this[ 'dispatch' ]( X_EVENT_KILL_INSTANCE_CANCELED );
return;
};
if( this[ '_listeners' ] && this[ '_listeners' ][ X_Listeners_.DISPATCHING ] ){
@@ -65,18 +65,18 @@ X_Class_CommonMethods =
return;
};
} else {
- this.dispatch( X_Event.BEFORE_KILL_INSTANCE );
+ this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE );
};
// asyncDispatch ã®åé¤
for( p in X_EventDispatcher_LAZY_TIMERS ){
if( X_EventDispatcher_LAZY_TIMERS[ p ] === this ){
delete X_EventDispatcher_LAZY_TIMERS[ p ]; // åé¤ãå
ï¼çç±ã¯ X.Timer.removeã確èªã
- X.Timer.remove( parseFloat( p ) );
+ X_Timer_remove( parseFloat( p ) );
};
};
- this.dispatch( X_Event.KILL_INSTANCE );
+ this[ 'dispatch' ]( X_EVENT_KILL_INSTANCE );
this._listeners && X_EventDispatcher_systemUnlisten( this );
};
@@ -92,11 +92,11 @@ X_Class_CommonMethods =
i = def.userList.indexOf( instance );
if( i !== -1 ){
data = X_Class_getPrivate( instance );
- if( data[ '_listeners' ] && data[ '_listeners' ][ X_Listeners_.DISPATCHING ] && data.instanceOf( X.EventDispatcher ) ){
+ if( data[ '_listeners' ] && data[ '_listeners' ][ X_Listeners_.DISPATCHING ] && data[ 'instanceOf' ]( X.EventDispatcher ) ){
data[ '_listeners' ][ X_Listeners_.KILL_RESERVED ] = true;
} else {
X_Class_killPrivateFlag = true;
- data.kill();
+ data[ 'kill' ]();
};
def.dataList.splice( i, 1 );
def.userList.splice( i, 1 );
@@ -114,7 +114,7 @@ X_Class_CommonMethods =
* @return {*}
*/
// TODO ç¾å¨ new ãã¦ããã¤ã³ã¹ã¿ã³ã¹ãä¿æãã¦ãã§ãã¯ãã
- Super : function( var_args ){
+ 'Super' : function( var_args ){
var sClass = this,
i = X_Class_CALLING_SUPER.indexOf( sClass ),
n = -1,
@@ -154,7 +154,7 @@ X_Class_CommonMethods =
* @example return this.superCall( arguments.callee, param0, param1, ... );
* @return {*} ãªã¼ãã¼ã©ã¤ãå
ã®é¢æ°ãå¼ã³åºããæ»ãå¤ã
*/
- superCall : function( funcNameOrFunc, var_args ){
+ 'superCall' : function( funcNameOrFunc, var_args ){
var sClass = this,
args = arguments,
name, p, sFunc, hit = false;
@@ -191,7 +191,7 @@ X_Class_CommonMethods =
case 4 :
return sFunc.call( this, args[ 1 ], args[ 2 ], args[ 3 ] );
default :
- args = X.Object.cloneArray( args );
+ args = X_Object_cloneArray( args );
args.shift();
return sFunc.apply( this, args );
};
@@ -209,7 +209,7 @@ X_Class_CommonMethods =
* @return {boolean}
*/
// TODO instanceof ã«å¯¾å¿ãããã©ã¦ã¶ã¯ãã¡ãã使ç¨
- instanceOf : function( klass ){
+ 'instanceOf' : function( klass ){
var Super = this;
if( this.constructor === klass ) return true;
while( Super = X_Class_getClassDef( Super ).SuperClass ){
@@ -243,54 +243,77 @@ X_Class_CommonMethods =
* @namespace X.Class
* @alias X.Class
*/
-X.Class = {
+X[ 'Class' ] = {
/**
* è¨å®ãªãã
+ * @const
*/
- NONE : 0,
+ 'NONE' : 0,
/**
* ã¤ã³ã¹ã¿ã³ã¹ã¯ç ´æ£æ(this.kill())ã«ååããã次åã® new MyClass() æã«åå©ç¨ããã¾ãã
+ * @const
*/
- POOL_OBJECT : 1,
+ 'POOL_OBJECT' : 1,
/**
* å®ç¾©ããã¯ã©ã¹ã¯æ½è±¡ã¯ã©ã¹ã«ãªãã¾ããnew AbstractClass() ã¨ããã¨ã¨ã©ã¼ã«ãªãã¾ãã
+ * @const
*/
- ABSTRACT : 2,
+ 'ABSTRACT' : 2,
/**
* ã¯ã©ã¹ã®ç¶æ¿ãç¦æ¢ããã
+ * @const
*/
- FINAL : 4,
+ 'FINAL' : 4,
/**
* 使ç¨ãä¸æ¢ãpetanR ã©ã¤ãã©ãªä½¿ç¨ããã¸ã§ã¯ããã SUPER_ACCESS ãæ¶ããããããåé¤ã
+ * @const
*/
- SUPER_ACCESS : 8,
+ 'SUPER_ACCESS' : 8,
/**
* å
é¨ã³ã¼ãã主㫠X.UI ãã¬ã¼ã ã¯ã¼ã¯ã«å¯¾ãã¦ããã¬ã¼ã å¤ã«é²åºããã¤ã³ã¹ã¿ã³ã¹ã¨ãã¢ã§åä½ãããã·ã£ãã¦ãªã¤ã³ã¹ã¿ã³ã¹ã®ä½¿ç¨ã宣è¨ããã
* Javascript ã¯ã¤ã³ã¹ã¿ã³ã¹æ¯ã®ã«ãã»ã«åãã¨ã¦ãã³ã¹ãé«ãå¾®å¦ãªã³ã¹ãå¢ã§é è½ãããã¤ã³ã¹ã¿ã³ã¹ã使ãã
+ * @const
*/
- PRIVATE_DATA : 16,
+ 'PRIVATE_DATA' : 16,
/**
* æªå®è£
ãã§ãç®å°ã«ãªãã®ã§ä»ãã¦ããã¾ãããã
+ * @const
*/
- SINGLETON : 32,
+ 'SINGLETON' : 32,
+ 'create' : X_Class_create,
+
+ // TODO collect
+
+ '_newPrivate' : X_Class_newPrivate,
+
+ '_getPrivate' : X_Class_getPrivate
+
+};
+
+
+
+// ------------------------------------------------------------------------- //
+// --- implements ---------------------------------------------------------- //
+// ------------------------------------------------------------------------- //
/**
* ã¯ã©ã¹ãå®ç¾©ããã
* X.Class.create() ã«ããã¯ã©ã¹å®ç¾©ã¯å¿
ãããã³ã³ã¹ãã©ã¯ã¿ãå¿
è¦ã¨ãã¾ãããã¯ã©ã¹å®ç¾©æã«ã³ã³ã¹ãã©ã¯ã¿ãæªè¨å®ã®å ´åãã¹ã¼ãã¼ã¯ã©ã¹ãããã°ãã®ã³ã³ã¹ãã©ã¯ã¿ã使ç¨ãã¾ãã
+ * @alias X.Class.create
* @param {string} [displayName] ã¯ã©ã¹ã®åå
* @param {number} [classSetting=0] X.Class.POOL_OBJECT | X.Class.FINAL ãªã©
* @param {__ClassBase__=} [privateClass] ãã®ã¯ã©ã¹ã¨ãã¢ã§åä½ããã·ã£ãã¦ã¯ã©ã¹
* @param {object} [props={}] ãã®ã¯ã©ã¹ã®ã¡ã³ãã¨é¢æ°ãã³ã³ã¹ãã©ã¯ã¿ã¯ Constructor ã¨æ¸ããã¨
* @return {__ClassBase__}
*/
- create : function( /* displayName, classSetting, privateClass, props */ ){
+ function X_Class_create( /* displayName, classSetting, privateClass, props */ ){
var args = X_Object_cloneArray( arguments ),
displayName = args[ 0 ],
classSetting,
@@ -340,14 +363,14 @@ X.Class = {
// ã¯ã©ã¹ã¡ã³ãç¨ãªãã¸ã§ã¯ããç¡ãã§ãã¯ã©ã¹ã¯ä½æå¯è½
props = {};
} else
- if( props.Constructor && X_Type_isFunction( props.Constructor ) ){
- classDef.Constructor = props.Constructor;
+ if( props[ 'Constructor' ] && X_Type_isFunction( props[ 'Constructor' ] ) ){
+ classDef.Constructor = props[ 'Constructor' ];
};
- klass = X_Callback_actualClosure( hash = { _ : X_Class_actualConstructor } ); // TODO hash = classDef
- hash.c = klass;
- klass.superClassOf = X_Class_superClassOf;
- klass.subClassOf = X_Class_subClassOf;
+ klass = X_Callback_actualClosure( hash = { proxy : X_Class_actualConstructor } ); // TODO hash = classDef
+ hash.klass = klass;
+ klass[ 'superClassOf' ] = X_Class_superClassOf;
+ klass[ 'subClassOf' ] = X_Class_subClassOf;
if( X_Class_useObjectCreate ){
klass.prototype = X_Class_override( X_Class_override( X_Class_traits || klass.prototype, props, true ), X_Class_CommonMethods, false );
@@ -365,7 +388,7 @@ X.Class = {
klass.prototype.constructor = klass;
};
- klass.name = displayName;
+ klass[ 'name' ] = displayName;
if( opt_abstract ){
classDef.Abstract = true;
@@ -377,7 +400,7 @@ X.Class = {
if( opt_final ){
classDef.Final = true;
} else {
- klass.inherits = X_Class_inherits;
+ klass[ 'inherits' ] = X_Class_inherits;
};
if( opt_private ){
if( classDef.privateClass ){
@@ -392,19 +415,10 @@ X.Class = {
X_Class_DEF_LIST.push( classDef );
};
return klass;
- },
-
- _newPrivate : X_Class_newPrivate,
-
- _getPrivate : X_Class_getPrivate
-
-};
+ };
-// ------------------------------------------------------------------------- //
-// --- implements ---------------------------------------------------------- //
-// ------------------------------------------------------------------------- //
function X_Class_getClass( instance ){
var cList = X_Class_CLASS_LIST,
i = cList.length,
@@ -593,7 +607,7 @@ function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props
* ããã«ãã pool ããã ãªãã¸ã§ã¯ãï¼ç ´æ£ãããã¤ã³ã¹ã¿ã³ã¹ï¼ ãåå©ç¨ã§ãã
*/
function X_Class_actualConstructor( f, args ){
- var klass = f.c,
+ var klass = f.klass,
def = X_Class_getClassDef( klass ),
dataUser = def._tempUser,
instance, obj,
@@ -628,7 +642,7 @@ function X_Class_actualConstructor( f, args ){
def.SuperConstructor &&
def.SuperConstructor.apply( instance, args );
if( ( X_Type_isObject( obj ) && obj !== instance ) || X_Type_isFunction( obj ) ){ // Class
- instance.kill();
+ instance[ 'kill' ]();
return obj;
};
return instance;