X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/7a654f8d43fdb43d78b63d90528bed6e86b608cc..6746dc89c47ed01b165cc1152533605f97eb8e8d:/docs/source/Base3.html diff --git a/docs/source/Base3.html b/docs/source/Base3.html index 1c5966ab..245f40e7 100644 --- a/docs/source/Base3.html +++ b/docs/source/Base3.html @@ -1,4 +1,21 @@ -
\ No newline at end of file + + +/** + + + + +The source code + + + + + + +/** * @author Jacky Nguyen <jacky@sencha.com> * @docauthor Jacky Nguyen <jacky@sencha.com> * @class Ext.Base @@ -19,81 +36,73 @@ var Base = Ext.Base = function() {};
* Get the reference to the current class from which this object was instantiated. Unlike {@link Ext.Base#statics}, * `this.self` is scope-dependent and it's meant to be used for dynamic inheritance. See {@link Ext.Base#statics} * for a detailed comparison - - Ext.define('My.Cat', { - statics: { - speciesName: 'Cat' // My.Cat.speciesName = 'Cat' - }, - - constructor: function() { - alert(this.self.speciesName); / dependent on 'this' - - return this; - }, - - clone: function() { - return new this.self(); - } - }); - - - Ext.define('My.SnowLeopard', { - extend: 'My.Cat', - statics: { - speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard' - } - }); - - var cat = new My.Cat(); // alerts 'Cat' - var snowLeopard = new My.SnowLeopard(); // alerts 'Snow Leopard' - - var clone = snowLeopard.clone(); - alert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard' - + * + * Ext.define('My.Cat', { + * statics: { + * speciesName: 'Cat' // My.Cat.speciesName = 'Cat' + * }, + * + * constructor: function() { + * alert(this.self.speciesName); / dependent on 'this' + * + * return this; + * }, + * + * clone: function() { + * return new this.self(); + * } + * }); + * + * + * Ext.define('My.SnowLeopard', { + * extend: 'My.Cat', + * statics: { + * speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard' + * } + * }); + * + * var cat = new My.Cat(); // alerts 'Cat' + * var snowLeopard = new My.SnowLeopard(); // alerts 'Snow Leopard' + * + * var clone = snowLeopard.clone(); + * alert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard' + * * @type Class * @protected - * @markdown */ self: Base, - /** - * Default constructor, simply returns `this` - * - * @constructor - * @protected - * @return {Object} this - */ + // Default constructor, simply returns `this` constructor: function() { return this; }, /** * Initialize configuration for this class. a typical example: - - Ext.define('My.awesome.Class', { - // The default config - config: { - name: 'Awesome', - isAwesome: true - }, - - constructor: function(config) { - this.initConfig(config); - - return this; - } - }); - - var awesome = new My.awesome.Class({ - name: 'Super Awesome' - }); - - alert(awesome.getName()); // 'Super Awesome' - + * + * Ext.define('My.awesome.Class', { + * // The default config + * config: { + * name: 'Awesome', + * isAwesome: true + * }, + * + * constructor: function(config) { + * this.initConfig(config); + * + * return this; + * } + * }); + * + * var awesome = new My.awesome.Class({ + * name: 'Super Awesome' + * }); + * + * alert(awesome.getName()); // 'Super Awesome' + * * @protected * @param {Object} config * @return {Object} mixins The mixin prototypes as key - value pairs - * @markdown */ initConfig: function(config) { if (!this.$configInited) { @@ -131,43 +140,42 @@ var Base = Ext.Base = function() {}; /** * Call the parent's overridden method. For example: - - Ext.define('My.own.A', { - constructor: function(test) { - alert(test); - } - }); - - Ext.define('My.own.B', { - extend: 'My.own.A', - - constructor: function(test) { - alert(test); - - this.callParent([test + 1]); - } - }); - - Ext.define('My.own.C', { - extend: 'My.own.B', - - constructor: function() { - alert("Going to call parent's overriden constructor..."); - - this.callParent(arguments); - } - }); - - var a = new My.own.A(1); // alerts '1' - var b = new My.own.B(1); // alerts '1', then alerts '2' - var c = new My.own.C(2); // alerts "Going to call parent's overriden constructor..." - // alerts '2', then alerts '3' - + * + * Ext.define('My.own.A', { + * constructor: function(test) { + * alert(test); + * } + * }); + * + * Ext.define('My.own.B', { + * extend: 'My.own.A', + * + * constructor: function(test) { + * alert(test); + * + * this.callParent([test + 1]); + * } + * }); + * + * Ext.define('My.own.C', { + * extend: 'My.own.B', + * + * constructor: function() { + * alert("Going to call parent's overriden constructor..."); + * + * this.callParent(arguments); + * } + * }); + * + * var a = new My.own.A(1); // alerts '1' + * var b = new My.own.B(1); // alerts '1', then alerts '2' + * var c = new My.own.C(2); // alerts "Going to call parent's overriden constructor..." + * // alerts '2', then alerts '3' + * * @protected * @param {Array/Arguments} args The arguments, either an array or the `arguments` object * from the current method, for example: `this.callParent(arguments)` * @return {Mixed} Returns the result from the superclass' method - * @markdown */ callParent: function(args) { var method = this.callParent.caller, @@ -209,61 +217,60 @@ var Base = Ext.Base = function() {}; * Get the reference to the class from which this object was instantiated. Note that unlike {@link Ext.Base#self}, * `this.statics()` is scope-independent and it always returns the class from which it was called, regardless of what * `this` points to during run-time - - Ext.define('My.Cat', { - statics: { - totalCreated: 0, - speciesName: 'Cat' // My.Cat.speciesName = 'Cat' - }, - - constructor: function() { - var statics = this.statics(); - - alert(statics.speciesName); // always equals to 'Cat' no matter what 'this' refers to - // equivalent to: My.Cat.speciesName - - alert(this.self.speciesName); // dependent on 'this' - - statics.totalCreated++; - - return this; - }, - - clone: function() { - var cloned = new this.self; // dependent on 'this' - - cloned.groupName = this.statics().speciesName; // equivalent to: My.Cat.speciesName - - return cloned; - } - }); - - - Ext.define('My.SnowLeopard', { - extend: 'My.Cat', - - statics: { - speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard' - }, - - constructor: function() { - this.callParent(); - } - }); - - var cat = new My.Cat(); // alerts 'Cat', then alerts 'Cat' - - var snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard' - - var clone = snowLeopard.clone(); - alert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard' - alert(clone.groupName); // alerts 'Cat' - - alert(My.Cat.totalCreated); // alerts 3 - + * + * Ext.define('My.Cat', { + * statics: { + * totalCreated: 0, + * speciesName: 'Cat' // My.Cat.speciesName = 'Cat' + * }, + * + * constructor: function() { + * var statics = this.statics(); + * + * alert(statics.speciesName); // always equals to 'Cat' no matter what 'this' refers to + * // equivalent to: My.Cat.speciesName + * + * alert(this.self.speciesName); // dependent on 'this' + * + * statics.totalCreated++; + * + * return this; + * }, + * + * clone: function() { + * var cloned = new this.self; // dependent on 'this' + * + * cloned.groupName = this.statics().speciesName; // equivalent to: My.Cat.speciesName + * + * return cloned; + * } + * }); + * + * + * Ext.define('My.SnowLeopard', { + * extend: 'My.Cat', + * + * statics: { + * speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard' + * }, + * + * constructor: function() { + * this.callParent(); + * } + * }); + * + * var cat = new My.Cat(); // alerts 'Cat', then alerts 'Cat' + * + * var snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard' + * + * var clone = snowLeopard.clone(); + * alert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard' + * alert(clone.groupName); // alerts 'Cat' + * + * alert(My.Cat.totalCreated); // alerts 3 + * * @protected * @return {Class} - * @markdown */ statics: function() { var method = this.statics.caller, @@ -278,34 +285,33 @@ var Base = Ext.Base = function() {}; /** * Call the original method that was previously overridden with {@link Ext.Base#override} - - Ext.define('My.Cat', { - constructor: function() { - alert("I'm a cat!"); - - return this; - } - }); - - My.Cat.override({ - constructor: function() { - alert("I'm going to be a cat!"); - - var instance = this.callOverridden(); - - alert("Meeeeoooowwww"); - - return instance; - } - }); - - var kitty = new My.Cat(); // alerts "I'm going to be a cat!" - // alerts "I'm a cat!" - // alerts "Meeeeoooowwww" - + * + * Ext.define('My.Cat', { + * constructor: function() { + * alert("I'm a cat!"); + * + * return this; + * } + * }); + * + * My.Cat.override({ + * constructor: function() { + * alert("I'm going to be a cat!"); + * + * var instance = this.callOverridden(); + * + * alert("Meeeeoooowwww"); + * + * return instance; + * } + * }); + * + * var kitty = new My.Cat(); // alerts "I'm going to be a cat!" + * // alerts "I'm a cat!" + * // alerts "Meeeeoooowwww" + * * @param {Array/Arguments} args The arguments, either an array or the `arguments` object * @return {Mixed} Returns the result after calling the overridden method - * @markdown */ callOverridden: function(args) { var method = this.callOverridden.caller; @@ -337,19 +343,21 @@ var Base = Ext.Base = function() {}; // These static properties will be copied to every newly created class with {@link Ext#define} Ext.apply(Ext.Base, { - /** + /** * Create a new instance of this Class. -Ext.define('My.cool.Class', { - ... -}); - -My.cool.Class.create({ - someConfig: true -}); - * @property create + * + * Ext.define('My.cool.Class', { + * ... + * }); + * + * My.cool.Class.create({ + * someConfig: true + * }); + * + * All parameters are passed to the constructor of the class. + * + * @return {Object} the created instance. * @static - * @type Function - * @markdown */ create: function() { return Ext.create.apply(Ext, [this].concat(Array.prototype.slice.call(arguments, 0))); @@ -394,24 +402,22 @@ My.cool.Class.create({ this.prototype[name] = fn; }, - /** + /** * Add / override static properties of this class. - - Ext.define('My.cool.Class', { - ... - }); - - My.cool.Class.addStatics({ - someProperty: 'someValue', // My.cool.Class.someProperty = 'someValue' - method1: function() { ... }, // My.cool.Class.method1 = function() { ... }; - method2: function() { ... } // My.cool.Class.method2 = function() { ... }; - }); - - * @property addStatics - * @static - * @type Function + * + * Ext.define('My.cool.Class', { + * ... + * }); + * + * My.cool.Class.addStatics({ + * someProperty: 'someValue', // My.cool.Class.someProperty = 'someValue' + * method1: function() { ... }, // My.cool.Class.method1 = function() { ... }; + * method2: function() { ... } // My.cool.Class.method2 = function() { ... }; + * }); + * * @param {Object} members - * @markdown + * @return {Ext.Base} this + * @static */ addStatics: function(members) { for (var name in members) { @@ -423,29 +429,26 @@ My.cool.Class.create({ return this; }, - /** + /** * Add methods / properties to the prototype of this class. - - Ext.define('My.awesome.Cat', { - constructor: function() { - ... - } - }); - - My.awesome.Cat.implement({ - meow: function() { - alert('Meowww...'); - } - }); - - var kitty = new My.awesome.Cat; - kitty.meow(); - - * @property implement - * @static - * @type Function + * + * Ext.define('My.awesome.Cat', { + * constructor: function() { + * ... + * } + * }); + * + * My.awesome.Cat.implement({ + * meow: function() { + * alert('Meowww...'); + * } + * }); + * + * var kitty = new My.awesome.Cat; + * kitty.meow(); + * * @param {Object} members - * @markdown + * @static */ implement: function(members) { var prototype = this.prototype, @@ -487,34 +490,32 @@ My.cool.Class.create({ } }, - /** + /** * Borrow another class' members to the prototype of this class. - -Ext.define('Bank', { - money: '$$$', - printMoney: function() { - alert('$$$$$$$'); - } -}); - -Ext.define('Thief', { - ... -}); - -Thief.borrow(Bank, ['money', 'printMoney']); - -var steve = new Thief(); - -alert(steve.money); // alerts '$$$' -steve.printMoney(); // alerts '$$$$$$$' - - * @property borrow - * @static - * @type Function + * + * Ext.define('Bank', { + * money: '$$$', + * printMoney: function() { + * alert('$$$$$$$'); + * } + * }); + * + * Ext.define('Thief', { + * ... + * }); + * + * Thief.borrow(Bank, ['money', 'printMoney']); + * + * var steve = new Thief(); + * + * alert(steve.money); // alerts '$$$' + * steve.printMoney(); // alerts '$$$$$$$' + * * @param {Ext.Base} fromClass The class to borrow members from * @param {Array/String} members The names of the members to borrow * @return {Ext.Base} this - * @markdown + * @static + * @private */ borrow: function(fromClass, members) { var fromPrototype = fromClass.prototype, @@ -531,40 +532,37 @@ steve.printMoney(); // alerts '$$$$$$$' return this; }, - /** + /** * Override prototype members of this class. Overridden methods can be invoked via * {@link Ext.Base#callOverridden} - - Ext.define('My.Cat', { - constructor: function() { - alert("I'm a cat!"); - - return this; - } - }); - - My.Cat.override({ - constructor: function() { - alert("I'm going to be a cat!"); - - var instance = this.callOverridden(); - - alert("Meeeeoooowwww"); - - return instance; - } - }); - - var kitty = new My.Cat(); // alerts "I'm going to be a cat!" - // alerts "I'm a cat!" - // alerts "Meeeeoooowwww" - - * @property override - * @static - * @type Function + * + * Ext.define('My.Cat', { + * constructor: function() { + * alert("I'm a cat!"); + * + * return this; + * } + * }); + * + * My.Cat.override({ + * constructor: function() { + * alert("I'm going to be a cat!"); + * + * var instance = this.callOverridden(); + * + * alert("Meeeeoooowwww"); + * + * return instance; + * } + * }); + * + * var kitty = new My.Cat(); // alerts "I'm going to be a cat!" + * // alerts "I'm a cat!" + * // alerts "Meeeeoooowwww" + * * @param {Object} members * @return {Ext.Base} this - * @markdown + * @static */ override: function(members) { var prototype = this.prototype, @@ -649,50 +647,47 @@ steve.printMoney(); // alerts '$$$$$$$' /** * Get the current class' name in string format. - - Ext.define('My.cool.Class', { - constructor: function() { - alert(this.self.getName()); // alerts 'My.cool.Class' - } - }); - - My.cool.Class.getName(); // 'My.cool.Class' - + * + * Ext.define('My.cool.Class', { + * constructor: function() { + * alert(this.self.getName()); // alerts 'My.cool.Class' + * } + * }); + * + * My.cool.Class.getName(); // 'My.cool.Class' + * * @return {String} className - * @markdown */ getName: function() { return Ext.getClassName(this); }, - /** + /** * Create aliases for existing prototype methods. Example: - - Ext.define('My.cool.Class', { - method1: function() { ... }, - method2: function() { ... } - }); - - var test = new My.cool.Class(); - - My.cool.Class.createAlias({ - method3: 'method1', - method4: 'method2' - }); - - test.method3(); // test.method1() - - My.cool.Class.createAlias('method5', 'method3'); - - test.method5(); // test.method3() -> test.method1() - - * @property createAlias - * @static - * @type Function + * + * Ext.define('My.cool.Class', { + * method1: function() { ... }, + * method2: function() { ... } + * }); + * + * var test = new My.cool.Class(); + * + * My.cool.Class.createAlias({ + * method3: 'method1', + * method4: 'method2' + * }); + * + * test.method3(); // test.method1() + * + * My.cool.Class.createAlias('method5', 'method3'); + * + * test.method5(); // test.method3() -> test.method1() + * * @param {String/Object} alias The new method name, or an object to set multiple aliases. See * {@link Ext.Function#flexSetter flexSetter} * @param {String/Object} origin The original method name - * @markdown + * @static + * @method */ createAlias: flexSetter(function(alias, origin) { this.prototype[alias] = this.prototype[origin]; @@ -700,4 +695,6 @@ steve.printMoney(); // alerts '$$$$$$$' }); })(Ext.Function.flexSetter); -