先上代码
function Person(name) {
this.weight = 7;
this.height = 14;
this.skin = "yellow";
this.gender = "";
this.name = name;
this.age = 0;
}
Person.prototype.eat = function () {
console.log("吃吃");
};
Person.prototype.cry = function () {
console.log("哭哭");
};
var person1 = new Person;
function pe() {
}
pe.prototype.txt=function(){
console.log("a");
}
pe.prototype = new Person;
var tom = new pe;
pe.prototype.writeCss = function () {
console.log("我会")
};
pe.prototype.writeJs = function () {
console.log("JS");
};
咱们先分析下代码
首先我们构造了一个Person的构造函数,并在Person的共享中,即Person.prototype中加入了两个属性即 eat和cry
此时图形是这样的
并且 我们创建了一个person1的实例 图就变为
然后 我们又创建了一个构造函数pe,并让其pe.prototype=new Person
图形则变为
然后再Pe下创建了一个tom的实例,再到 pe.prototype这个共享内再创建两个方法即 writeCss跟writeJs
图形则变为
这样我们就完成了 原型的继承
如果我们将代码改为这样
// pe.prototype = new Person;
pe.prototype.__proto__=Person.prototype;
图就要改为这样
原来pe.prototype中继承的Person私有的一些方法就没有了
若将代码改成这样
// pe.prototype = new Person;
pe.prototype=Person.prototype;
// pe.prototype.__proto__=Person.prototyp
图形这要变成这样
此时pe跟person就共享了同一个prototype
以上是个人学习的一点心得,欢迎指正