在各大博客和资料网上,对于构造函数的继承方法也比较多,以下是我个人认为对构造继承的理解:附上代码先
构造函数的组合继承
// 构造一个函数Person
function Person( name, age ){
this.name = name;
this.age = age;
}
// 添加两个原型方法
Person.prototype.say = function(){
alert('我叫' + this.name + ',今年' + this.age + '岁');
}
Person.prototype.say2 = function(){
alert('我很厉害的!');
}
// var person1 = new Person( '徐磊', 18 );person1.say();
// var person2 = new Person( '王思', 19 );person2.say();
// 再构造一个Girl函数
function Gril( name, age ){
// 组合继承1:Girl继承Person实例方法和属性
// Person.call( this, name, age );
Person.call(this);
this.name = name;
this.age = age;
}
// 组合继承2:Girl继承Person原型方法和继承
Girl.prototype = new Person();
// 修复构造器的指向,把指向Person改为指向自己Girl
Girl.prototype.constructor = Girl;
Girl.prototype.sex = '女';
// 实例化一个基于Person的对象person1
var person1 = new Person( '徐磊', 18 ); person1.say();
// 再实例化一个基于继承了Person的Girl对象girl1
var girl1 = new Girl( '李华', 20 ); girl1.say();girl1.say2();
// 看看构造器的指向是否发生改变
alert(girl1.constructor);