如何理解原型、原型链

1 篇文章 0 订阅
1 篇文章 0 订阅

一、原型

1.定义

原型prototype是function对象的一个属性,定义了构造函数实例化对象的公共祖先

2.实例

Car.prototype.name = 'BMW'
function Car(){

}
var car = new Car()
var car2 = new Car()
console.log(car.name)//'BMW'
console.log(car2.name)//'BMW'

3.构造器(constructor

可通过constructor来查看实例后对象的构造函数

car.constructor === Car//true
Car.prototype.constructor === Car//true

4.隐式原型(__proto__

可通过__proto__来查看实例对象的原型

car.__proto__.constructor === Car

new过程隐式发生的事

function Car(){
	var this = {
		__proto__ : Car.prototype
	}
	return this
}

二、原型链

1.定义

个人理解:实例对象按照对应的原型从下到上进行查找,到最终找到相应的数据,这个过程中原型呈链式结构展现,这种链式结构称之为原型链

2.实例

Grand.prototype.lastName = 'zhang'
function Grand(){}
var grand = new Grand()

Father.prototype = grand
function Father(){
	this.name = 'san'
}
var father = new Father()

Son.prototype = father
function Son(){}
var son = new Son()

console.log(son.name)//'san'
console.log(son.lastName)//'zhang'

查找son.name,首先查看构造函数中Son是否包含name属性,上例中不包含;于是再往上找,通过son.__proto__查看上一层的,存在name属性,son.name === "san",若没找到,再通过son.__proto__.__proto__进行查找;son.lastName同理

三、总结

  • 只有函数才可以使用prototype属性
  • 只有实例化的对象才可以使用__proto__属性
  • 实例对象的构造器为构造函数本身

参考链接:
1.JS 原型的含义和使用(作者: 今天也是爱大大的一天吖).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值