理解一下js的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 的方法。调用的顺序是 先找自身上有无这个方法,在找实例上有无这个方法。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页