+++ /dev/null
-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);
- 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"));
-
- 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("=== 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