《2018年9月24日》【连续357天】
标题:继承模式;
内容:
/ 继承发展史:
// 1.传统形式 -->原型链
// 过多的继承了没用的属性
// 2.借用构造函数
// 不能继承借用构造函数的原型
// 每次构造函数要多走一个函数
function Person(name,age,sex)
{
this.name = name;
this.age =age;
this.sex =sex;
}
function Student(name,age,sex,grade)
{
Person.call(this,name,age,sex);
this.grade = grade;
}
var student = new Student();
// 3.共享原型:
// 不能随便改动自己的原型
Father.prototype.lastName = "Deng";
function Father()
{
}
function Son()
{
}
Son.prototype = Father.prototype;
var son = new Son();
var father = new Father();
// function inherit(Target, Origin)
// {
// Target.prototype = Origin.prototype;
// }
// 修改
// 圣杯模式 (最完美的继承模式)
function inherit(Target,Origin)
{
function F(){};
F.prototype = Origin.prototype;
Target.prototype = new F();
Target.prototype.constructor = Target;
Target.prototype.uber = Origin.prototype;
}
inherit(Son,Father);
var son1 = new Son();
// yahoo的YUI3库中的inherit实现
// var inherit =(function ()
// {
// var F = function () {};
// return function(Target,Origin)
// {
// F.prototype = Origin.prototype;
// Target.prototype = new F{};
// Target.prototype.constructor = Target;
// Target.prototype.uber = Origin.prototype;
// }
// }());
//该写法里的F通过闭包,成为了私有变量;