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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值