-
Notifications
You must be signed in to change notification settings - Fork 0
/
coffee.js
80 lines (50 loc) · 1.68 KB
/
coffee.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
Javascript Object Oriented
*/
(function() {
var Child, GrandChild, Parent, child, grandChild, parent,
__hasProp = Object.prototype.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; };
Parent = (function() {
function Parent(msg) {
if (msg == null) msg = "Parent constuctor";
this.log(msg);
}
Parent.prototype.log = function(msg) {
if (window.console != null) return console.log(msg);
};
Parent.prototype.val = 10;
Parent.prototype.getVal = function() {
return this.val;
};
return Parent;
})();
Child = (function(_super) {
__extends(Child, _super);
function Child() {
Child.__super__.constructor.apply(this, arguments);
}
Child.prototype.val = 100;
Child.prototype.getVal = function() {
return "" + (Child.__super__.getVal.call(this)) + "!";
};
return Child;
})(Parent);
GrandChild = (function(_super) {
__extends(GrandChild, _super);
function GrandChild() {
GrandChild.__super__.constructor.apply(this, arguments);
}
GrandChild.prototype.val = 1000;
GrandChild.prototype.getVal = function() {
return "" + (GrandChild.__super__.getVal.call(this)) + "!!";
};
return GrandChild;
})(Child);
parent = new Parent;
child = new Child;
grandChild = new GrandChild;
parent.log(parent.getVal());
child.log(child.getVal());
grandChild.log(grandChild.getVal());
}).call(this);