prototype的诞生初衷是为了节约内存
把共有的属性和方法放到prototype上,而不是每个对象都存着这些共有属性和方法
从而达到节省内存的目的
理解
prototype就像是一类物品的共有部分(如:轮子),加上特有部分,构成了差异性
而__proto__是访问这个共有部分的钥匙
new一个对象时发生了什么
1.新建一个空对象
2.空对象.__proto__=原对象.prototype
3.根据上下文绑带赋值(空对象.name=name)
4.return这个对象
例子
function puti(name) {
this.name = name
this.say = function() {
console.log("my name is &{{name}}");
}
}
puti.prototype.change = function() {
console.log("72changes");
}
var new1 = new puti("wukong");
console.log("new1", new1);