原型prototype

函数都有prototype属性

对象都有__proto__属性

原型就像是干爹,可以改变,可以多个

function Cat(){
this.climb = function(){
alert("爬树");
}

}


function Bird(){
this.fly = function(){
alert("飞的更高");
}
}

老虎
function Tigger(){
// 私有属性
this.hunt = function(){
alert("打猎");
}
}
// 让造老虎的机器的原型为邻居家造出来的一只小猫
Tigger.prototype = new Cat();
// 不知道原型的就找个空对象
// 老虎内心知道自己的原型是那只小猫,它就让自己的一个__proto__指向这只小猫。老虎知道自己的母亲是谁,他就用一个construct指向他的母亲
var tiger = new Tigger();
tiger.hunt();
tiger.climb();
// 改变原型
Tigger.prototype = new Bird();
// 从新new一个,不从新new是要出错的,因为他只记得他的原型为Cat();
tiger = new Tigger();
tiger.fly();

 复制继承

function Goodchild(){
this.study = function(){
alert("读书");
}
}
function Badchild(){
this.can = function(){
alert("打游戏")
}
this.extend = function(obj){
for(var k in obj){
this[k] = obj[k];
}
}
}
// 复制继承
var good = new Goodchild();
var bad = new Badchild();
bad.extend(good);
bad.study();//坏孩子也会读书了

原文地址:https://www.cnblogs.com/niuniuniu/p/6404907.html