1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <title>Ext Core 4 Class Example</title>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 pre { border: 1px gray solid; padding: 5px; margin-top: 30px; }
10 <script type="text/javascript" src="../src/Ext.js"></script>
11 <script type="text/javascript" src="../src/version/Version.js"></script>
12 <script type="text/javascript" src="../src/lang/String.js"></script>
13 <script type="text/javascript" src="../src/lang/Array.js"></script>
14 <script type="text/javascript" src="../src/lang/Number.js"></script>
15 <script type="text/javascript" src="../src/lang/Date.js"></script>
16 <script type="text/javascript" src="../src/lang/Object.js"></script>
17 <script type="text/javascript" src="../src/lang/Function.js"></script>
18 <script type="text/javascript" src="../src/class/Base.js"></script>
19 <script type="text/javascript" src="../src/class/Class.js"></script>
20 <script type="text/javascript" src="../src/class/ClassManager.js"></script>
21 <script type="text/javascript" src="../src/class/Loader.js"></script>
22 <script type="text/javascript" src="../src/lang/Error.js"></script>
24 Ext.Loader.setConfig({
27 'Sample': 'src/Sample'
34 function storeCode() {
41 pre = document.getElementById(name);
47 sources[name] = pre.innerHTML;
56 <body onload="storeCode();">
58 Ext.require('Sample.Person', function() {
59 var aaron = new Sample.Person({
65 alert(aaron.getName()); // 'Aaron Conran'
66 alert(aaron.getGender()); // 'male'
67 alert(aaron.getIsCool()); // true
69 aaron.eat("Salad"); // alerts "I'm eating: Salad"
71 aaron.setGender('weird');
72 alert(aaron.getGender()); // 'unknown'
76 <button onclick="run('sample1')">Run Code</button>
80 Ext.require('Sample.Developer', function() {
81 var tommy = new Sample.Developer({
83 languages: ['PHP', 'JavaScript', 'HTML', 'CSS']
86 tommy.code('Objective-C'); // alerts "I can't code in: Objective-C"
87 tommy.code('JavaScript'); // alerts "I'm coding in: JavaScript"
88 // alerts "I'm eating: Bugs"
92 <button onclick="run('sample2')">Run Code</button>
96 Ext.require('Sample.Musician', function() {
97 var dave = new Sample.Musician({
102 dave.composeSongs(); // alerts "David Kaneda is composing songs"
103 dave.playGuitar(); // alerts "David Kaneda is playing guitar"
105 var anotherDave = Sample.Musician.clone(dave);
106 alert(anotherDave.getName()); // alerts "David Kaneda"
110 <button onclick="run('sample3')">Run Code</button>
114 Ext.require('Sample.CoolGuy', function() {
115 var jacky = new Sample.CoolGuy({
116 name: 'Jacky Nguyen',
120 jacky.playGuitar(); // alerts "Jacky Nguyen is playing guitar"
121 jacky.sing("Love Me or Die"); // alerts "Ahem..."
122 // alerts "I'm singing: Love Me or Die"
126 <button onclick="run('sample4')">Run Code</button>
130 Ext.require(['Sample.Developer', 'Sample.HumanResource'], function() {
131 var jacky = new Sample.Developer({
132 name: 'Jacky Nguyen',
133 languages: ['PHP', 'JavaScript', 'HTML', 'CSS']
135 noobie = new Sample.Developer({
137 languages: ['LameScript']
139 hr = Sample.HumanResource;
141 hr.recruit(noobie); // alerts "Noobie Dumb doesn't know JavaScript, no point recruiting!"
144 alert(hr.getDevelopersCount()); // alerts 1
148 <button onclick="run('sample5')">Run Code</button>
152 Ext.require(['Sample.deadlock.A'], function() {
153 // should throw Error
157 <button onclick="run('sample6')">Run Code</button>
161 Ext.require(['Sample.notdeadlock.A'], function() {
162 alert("Loading sequence: " + Ext.Loader.history.join(" -> "));
166 <button onclick="run('sample7')">Run Code</button>
170 Ext.require(['Sample.CTO', 'Sample.Developer'], function() {
171 var abe = new Sample.CTO();
172 alert(abe.isGeek); // alerts true
173 alert(abe.isSuperGeek); // alerts true
174 alert(abe.getAverageIQ()); // alerts 140
175 // not the current class
177 var ape = abe.clone();
178 alert(Ext.getClassName(ape)); // alerts 'Sample.CTO'
180 var jacky = new Sample.Developer();
181 alert(jacky.getAverageIQ()); // alerts 120
183 var jackie = abe.hireNewDeveloperLike(jacky);
184 alert(Ext.getClassName(jackie)); // alerts 'Sample.Developer'
188 <button onclick="run('sample8')">Run Code</button>
192 Ext.define('My.own.A', {
197 constructor: function() {
198 alert(this.statics().myName);
199 alert(this.self.myName);
203 var cloned = new this.self();
205 cloned.rootName = this.statics().myName;
211 Ext.define('My.own.B', {
219 var cloned = this.callParent();
221 cloned.special = true;
227 var a = new My.own.A(); // alerts 'A' then alerts 'A'
228 var b = new My.own.B(); // alerts 'A' then alerts 'B'
233 alert(Ext.getClassName(aa)); // alerts 'My.own.A'
234 alert(Ext.getClassName(bb)); // alerts 'My.own.B'
236 alert(aa.rootName); // alerts 'A'
237 alert(bb.rootName); // alerts 'A'
238 alert(bb.special); // alerts true
241 <button onclick="run('sample9')">Run Code</button>
245 Ext.define('My.Cat', {
248 speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
251 constructor: function() {
252 var statics = this.statics();
254 alert(statics.speciesName); // always equals to 'Cat' no matter what 'this' refers to
255 // equivalent to: My.Cat.speciesName
257 alert(this.self.speciesName); // dependent on 'this'
259 statics.totalCreated++;
265 var cloned = new this.self; // dependent on 'this'
267 cloned.groupName = this.statics().speciesName; // equivalent to: My.Cat.speciesName
274 Ext.define('My.SnowLeopard', {
278 speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard'
281 constructor: function() {
286 var cat = new My.Cat(); // alerts 'Cat', then alerts 'Cat'
288 var snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard'
290 var clone = snowLeopard.clone();
291 alert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard'
292 alert(clone.groupName); // alerts 'Cat'
294 alert(My.Cat.totalCreated); // alerts 3
297 <button onclick="run('sample10')">Run Code</button>
303 printMoney: function() {
308 Ext.define('Thief', {});
310 Thief.borrow(Bank, ['money', 'printMoney']);
312 var jacky = new Thief();
314 alert(jacky.money); // alerts '$$$'
315 jacky.printMoney(); // alerts '$$$$$$$'
318 <button onclick="run('sample11')">Run Code</button>