From: Matteo Nastasi Date: Thu, 24 Nov 2011 18:16:54 +0000 (+0100) Subject: base-test.js added X-Git-Url: https://mop.ddnsfree.com/gitweb/?p=xynt.git;a=commitdiff_plain;h=3e9c4fae0b1ba66af727278bd94cc5b38c9ba2e8 base-test.js added --- diff --git a/xynt-base-test.js b/xynt-base-test.js new file mode 100644 index 0000000..1e296f8 --- /dev/null +++ b/xynt-base-test.js @@ -0,0 +1,138 @@ +function A(a, b) { + this.a_dyn = "A DYN"; + this.a = a; + this.b = b; +} + +A.prototype = { + a_stat: "A STAT", + + a_func: function () { + console.log("a_func run"); + }, + aa_func: function () { + console.log("aa_func run in A class"); + } +} + +function B(a, b) { + this.b_dyn = "B DYN"; + A.call(this, a, b); +} + +B.prototype = { + b_stat: "B STAT", + + a_func: function () { + console.log("a_func run from B"); + console.log("and now try to call the super method"); + this.callSuper("a_func"); + }, + + b_func: function () { + console.log("b_func run"); + } +} +function C() { + this.c_dyn = "C DYN"; +} + +C.prototype = { + c_stat: "C STAT", + + aa_func: function () { + console.log("aa_func run in C class"); + }, + + c_func: function () { + console.log("c_func run"); + } +} + +Extends(B, A); + +function print_dynstat(inst, name) +{ + for (i = 0 ; i < inst.length ; i++) { + console.log(name[i]+".a_dyn: "+inst[i].a_dyn); + console.log(name[i]+".a_stat: "+inst[i].a_stat); + if (name[i][0] == 'b') { + console.log(name[i]+".b_dyn: "+inst[i].b_dyn); + console.log(name[i]+".b_stat: "+inst[i].b_stat); + } + if (name[i][0] == 'c') { + console.log(name[i]+".c_dyn: "+inst[i].c_dyn); + console.log(name[i]+".c_stat: "+inst[i].c_stat); + } + } +} + +window.onload = function () { + show_class(A); + show_class(B); + show_class(C); + + a1 = new A(1,2); + a2 = new A(3,4); + b1 = new B(5,6); + c1 = new C(); + + arr_inst = [ a1 , a2 , b1 , c1 ]; + arr_name = [ "a1", "a2", "b1", "c1" ]; + + print_dynstat(arr_inst, arr_name); + + console.log("---"); + console.log("ACTION: a1.a_stat = \"CHANGED\";"); + a1.a_stat = "CHANGED"; + + print_dynstat(arr_inst, arr_name); + + console.log("---"); + console.log("ACTION: A.prototype.a_stat = \"PROTO CHANGED\""); + A.prototype.a_stat = "PROTO CHANGED"; + + print_dynstat(arr_inst, arr_name); + + console.log("---"); + console.log("ACTION: ExtendsInst(c1, A, [1, 33])"); + + var ext = ExtendsInst(c1, A, [1, 33]); + console.log("ExtInst: "+(ext == true ? "TRUE" : "FALSE")); +// } function azaz() { + print_dynstat(arr_inst, arr_name); + + console.log("---"); + console.log("ACTION: B.prototype.a_stat = \"PROTO CHANGED\""); + B.prototype.a_stat = "PROTO CHANGED"; + + print_dynstat(arr_inst, arr_name); + + console.log("---"); + console.log("ACTION: A.prototype.a_stat = \"PROTO CHANGED 2\""); + console.log("ACTION: C.prototype.c_stat = \"PROTO CHANGED 2\""); + A.prototype.a_stat = "PROTO CHANGED 2"; + C.prototype.c_stat = "PROTO CHANGED 2"; + + print_dynstat(arr_inst, arr_name); + + console.log("---"); + console.log("=== INSTANCE b1 ==="); + show_inst(b1); + console.log("=== INSTANCE b1.a_func() ==="); + b1.a_func(); + console.log("=== INSTANCE b1.b_func() ==="); + b1.b_func(); + + console.log("---"); + console.log("=== INSTANCE c1 ==="); + show_inst(c1); + console.log("=== INSTANCE c1.a_func() ==="); + c1.a_func(); + console.log("=== INSTANCE c1.aa_func() ==="); + c1.aa_func(); + console.log("=== INSTANCE c1.callSuper aa_func() ==="); + c1.callSuper("aa_func"); + console.log("=== INSTANCE c1.c_func() ==="); + c1.c_func(); +} \ No newline at end of file