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);
/**
 * [ '潘金莲', '吴月娘', '李瓶儿', '苏小小' ]
 * [ '潘金莲', '吴月娘', '李瓶儿' ]
 */

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

猜你喜欢

转载自blog.csdn.net/qq_23143555/article/details/81200289