JavaScript中最常用的继承模式 结合原型模式和借用构造函数模式的有点于一体

function XiMenQing() {
  this.name = '西门庆';
  this.age = 34;
  this.wifes = ['潘金莲', '吴月娘', '李瓶儿'];
}

XiMenQing.prototype.details = function() {
  return '生子当如西门庆';
}

function WuDaLang() {
  XiMenQing.call(this);
}

var wuda = new WuDaLang();
console.log(wuda.wifes);
//console.log(wuda.details()); 此时XiMenQing和WuDaLang之间还没有建立起父子继承关系。
//指定继承关系 继承父类原型中的属性
WuDaLang.prototype = new XiMenQing();
var wuda = new WuDaLang();
console.log(wuda.details());
/**
 * 理解借用构造函数的目的仅仅只是对实例属性的继承
 */
wuda.wifes.push('苏小小');
console.log(wuda.wifes);
var wusong = new WuDaLang();
console.log(wusong.wifes);
/**
 * [ '潘金莲', '吴月娘', '李瓶儿', '苏小小' ]
 * [ '潘金莲', '吴月娘', '李瓶儿' ]
 */

使用借用构造函数实现对父对象实例属性的继承
使用原型继承实现对父对象原型属性的继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值