prototype 介绍
简单介绍
prototype 属性使您有能力向对象添加属性和方法。
个人理解,prototype 上的属性跟方法是用来做共享用的,看下面代码示例
未使用prototype
function A(){
this.type = "xx";
this.fun = function(){
console.log("fun")
}
}
var a = new A();
var b = new A();
console.log(a.fun === b.fun) //输出结果为 false
a,b 两个对象在上面写法中 完全独立 双方之间不存在任何影响。属性上实际上都是自己的。这样实际上造成了内存上的浪费。然后我们稍微改造一下
使用prototype
function A() {
this.type = "xx";
// this.fun = function(){
// console.log("fun")
// }
}
var a = new A();
var b = new A();
A.prototype.fun = function () {
console.log("fun")
}
console.log(a.fun === b.fun) //输出结果为 true
经过上面 使用了 prototype 的改造, 我们发现 a,b两个对象上都可以调用到fun这个方法,并且这两个值是相等的。
总结
写到实例的prototype上的 方法会被 共享出去,所有使用 这个实例构造出来的对象都可以调用到实例上prototype 的方法。调用的顺序是 先找自身上有无这个方法,在找实例上有无这个方法。