三,组合继承
function SuperType(name) { this.name = name; this.color = ['yellow','black','green']; } SuperType.prototype.sayName = function () { console.log(this.name); }; function SubType(name,age) { //构造函数继承SuperType 的属性 SuperType.call(this,name); this.age = age; } //原型继承了SuperType的属性和方法包括原型里的方法和属性 SubType.prototype = new SuperType(); SubType.prototype.sayAge = function () { console.log(this.age) }; var s = new SubType("jiang",20); s.color.push("red"); console.log(s.color); s.sayName(); s.sayAge(); var s1 = new SubType("jiang1",21); console.log(s1.color); s1.sayName(); s1.sayAge();运行结果:
[ 'yellow', 'black', 'green', 'red' ]
jiang
20
[ 'yellow', 'black', 'green' ]
jiang1
21
jiang
20
[ 'yellow', 'black', 'green' ]
jiang1
21
四,寄生式继承
function createAnother(original){ var clone = Object(original); //通过函数创建一个继承对象 clone.saySomething = function () { console.log("what"); }; return clone; } var person ={ name : 'Dived', age : 29 }; var p1 = createAnother(person); console.log(p1.name); console.log(p1.age); p1.saySomething();运行结果:
Dived
29
what
29
what
寄生式继承式创建一个封装继承过程的函数,该函数以某种方式增强对象,最后返回这个继承对象