1 //寄生组合式继承
2 function object(o) {
3 function F() {}
4 F.prototype = o;
5 return new F();
6 }
7
8 function inheritPrototype(subType, superType) {
9 var prototype = object(superType.prototype);
10 prototype.constructor = subType;
11 subType.prototype = prototype;
12 }
13
14 function SuperType(name) {
15 this.name = name;
16 this.colors = ["red", "blue", "green"];
17 }
18
19 SuperType.prototype.sayName = function() {
20 console.log(this.name);
21 };
22
23 function SubType(name, age) {
24 SuperType.call(this, name);
25 this.age = age;
26 }
27
28 inheritPrototype(SubType, SuperType);
29
30 SubType.prototype.sayAge = function() {
31 console.log(this.age);
32 };
33
34 var instance1 = new SubType("Nicholas", 29);
35 instance1.colors.push("black");
36 console.log(instance1.colors);
37 instance1.sayName();
38 instance1.sayAge();
39
40 var instance2 = new SubType("Greg", 27);
41 console.log(instance2.colors);
42 instance2.sayName();
43 instance2.sayAge();