Ext.require('Sample.Person', function() { var aaron = new Sample.Person({ name: 'Aaron Conran', gender: 'male', isCool: true }); alert(aaron.getName()); // 'Aaron Conran' alert(aaron.getGender()); // 'male' alert(aaron.getIsCool()); // true aaron.eat("Salad"); // alerts "I'm eating: Salad" aaron.setGender('weird'); alert(aaron.getGender()); // 'unknown' });
Ext.require('Sample.Developer', function() { var tommy = new Sample.Developer({ name: 'Tommy Maintz', languages: ['PHP', 'JavaScript', 'HTML', 'CSS'] }); tommy.code('Objective-C'); // alerts "I can't code in: Objective-C" tommy.code('JavaScript'); // alerts "I'm coding in: JavaScript" // alerts "I'm eating: Bugs" });
Ext.require('Sample.Musician', function() { var dave = new Sample.Musician({ name: 'David Kaneda', isCool: true }); dave.composeSongs(); // alerts "David Kaneda is composing songs" dave.playGuitar(); // alerts "David Kaneda is playing guitar" var anotherDave = Sample.Musician.clone(dave); alert(anotherDave.getName()); // alerts "David Kaneda" });
Ext.require('Sample.CoolGuy', function() { var jacky = new Sample.CoolGuy({ name: 'Jacky Nguyen', isCool: true }); jacky.playGuitar(); // alerts "Jacky Nguyen is playing guitar" jacky.sing("Love Me or Die"); // alerts "Ahem..." // alerts "I'm singing: Love Me or Die" });
Ext.require(['Sample.Developer', 'Sample.HumanResource'], function() { var jacky = new Sample.Developer({ name: 'Jacky Nguyen', languages: ['PHP', 'JavaScript', 'HTML', 'CSS'] }), noobie = new Sample.Developer({ name: 'Noobie Dumb', languages: ['LameScript'] }), hr = Sample.HumanResource; hr.recruit(noobie); // alerts "Noobie Dumb doesn't know JavaScript, no point recruiting!" hr.recruit(jacky); alert(hr.getDevelopersCount()); // alerts 1 });
Ext.require(['Sample.deadlock.A'], function() { // should throw Error });
Ext.require(['Sample.notdeadlock.A'], function() { alert("Loading sequence: " + Ext.Loader.history.join(" -> ")); });
Ext.require(['Sample.CTO', 'Sample.Developer'], function() { var abe = new Sample.CTO(); alert(abe.isGeek); // alerts true alert(abe.isSuperGeek); // alerts true alert(abe.getAverageIQ()); // alerts 140 // not the current class var ape = abe.clone(); alert(Ext.getClassName(ape)); // alerts 'Sample.CTO' var jacky = new Sample.Developer(); alert(jacky.getAverageIQ()); // alerts 120 var jackie = abe.hireNewDeveloperLike(jacky); alert(Ext.getClassName(jackie)); // alerts 'Sample.Developer' });
Ext.define('My.own.A', { statics: { myName: 'A' }, constructor: function() { alert(this.statics().myName); alert(this.self.myName); }, clone: function() { var cloned = new this.self(); cloned.rootName = this.statics().myName; return cloned; } }); Ext.define('My.own.B', { extend: 'My.own.A', statics: { myName: 'B' }, clone: function() { var cloned = this.callParent(); cloned.special = true; return cloned; } }); var a = new My.own.A(); // alerts 'A' then alerts 'A' var b = new My.own.B(); // alerts 'A' then alerts 'B' var aa = a.clone(); var bb = b.clone(); alert(Ext.getClassName(aa)); // alerts 'My.own.A' alert(Ext.getClassName(bb)); // alerts 'My.own.B' alert(aa.rootName); // alerts 'A' alert(bb.rootName); // alerts 'A' alert(bb.special); // alerts true
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('Bank', { money: '$$$', printMoney: function() { alert('$$$$$$$'); } }); Ext.define('Thief', {}); Thief.borrow(Bank, ['money', 'printMoney']); var jacky = new Thief(); alert(jacky.money); // alerts '$$$' jacky.printMoney(); // alerts '$$$$$$$'