+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");
+ }
+}
+
+function B(a, b) {
+ this.b_dyn = "B DYN";
+ A.call(this, a, b);
+}
+
+B.prototype = {
+ b_stat: "B STAT",
+
+ b_func: function () {
+ console.log("b_func run");
+ }
+}
+function C() {
+ this.c_dyn = "C DYN";
+}
+
+C.prototype = {
+ c_stat: "C STAT",
+
+ 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);
+ }
+}
+
+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"));
+
+ 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: C.prototype.a_stat = \"PROTO CHANGED\"");
+ C.prototype.a_stat = "PROTO CHANGED";
+
+ print_dynstat(arr_inst, arr_name);
+
+ console.log("=== INSTANCE c1 ===");
+ show_inst(c1);
+ console.log("=== INSTANCE c1.a_func() ===");
+ c1.a_func();
+ console.log("=== INSTANCE c1.c_func() ===");
+ c1.c_func();
+}
\ No newline at end of file