简单化构造函数的继承方法(一)- 组合继承

在各大博客和资料网上,对于构造函数的继承方法也比较多,以下是我个人认为对构造继承的理解:附上代码先

构造函数的组合继承

// 构造一个函数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);

猜你喜欢

转载自blog.csdn.net/weixin_43759645/article/details/84943402
今日推荐