继承
原型链的理解:
原型链就是 对象.–proto–.--proto-- 这种链式的调用。本质上是向js中公用属性组成的对象的一种访问。
圣杯模式
function inherit(Target,Origin) {
//定义一个构造函数F 做一个中间层
function F() {}
// F和origin公用一个原型
F.prototype = Origin.prototype;
// target去继承F
Target.prototype = new F();
// 将构造器指向Target
Target.prototype.constuctor = Target;
// 找超类 >>最终继承至哪
Target.prototype.uber = Origin.prototype;
}
Father.prototype.lastName = "Deng";
function Father(){
}
function Son() {
}
inherit(Son,Father);
var son = new Son();
var father = new Father();
console.log(son.lastName) //Deng
闭包:私有化变量
function Deng(name,wife) {
var perpareWife = "xiaozhang";
this.name = name;
this.wife = wife;
this.divorce = function () {
this.wife = perpareWife;
}
this.changePrepareWife = function (target) {
perpareWife = target
}
this.sayPrepareWife = function () {
console.log(perpareWife)
}
// 上面三个函数和Deng形成闭包,这三个函数拥有了Deng函数的执行期上下文
}
var deng = new Deng('deng','xiaoliu')
// deng.divorce()
// deng.wife >> xiaozhang
// deng.perpareWife >> undefined
// 闭包的用途:变量私有化,邓哥可以操作变量,但是外部无法访问到他