在了解原型链之前,我们首先理解几个概念:
JavaScript内置对象
所谓的内置对象 指的是:JavaScript
本身就自己有的对象 可以直接拿来就用。例如Array String
等等。JavaScript
一共有12内置对象
函数构造器对象(10个):它们都有
__proto__
和prototype
属性,typeof
"function"
String
、Number
、Boolean
、Array
、Function
、Date
、RegExp
、Error
、Object
、Event
其他对象:它们只有
__proto__
属性,typeof
"object"
Math
、JSON
原型(prototype)
,原型指针(__proto__)
,原型链,构造器指针(constructor)
原型
(prototype)
- 所有函数都有一个
prototype
(原型)属性,属性值是一个普通的对象
原型链:
在
javascript
中,每个函数都会初始化一个属性,原型(prototype)
,当我们需要访问这个函数的某个属性时,就会去到prototype
中寻找这个属性,若没有找到这个属性,prototype
中也存在自己的prototype
,于是乎就这样一直往上查找。
当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__
隐式原型上查找,即它的构造函数的prototype
,如果还没有找到就会再在构造函数的prototype
的__proto__
中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
原型指针
(__proto__)
:指向构造该对象的构造函数的原型
(prototype)
构造器指针
(constructor)
:
prototype
中有一个constructor
属性,这个属性的值就是指向原型的构造器(构造函数)
为了便于理解我画了一张图:
prototype.jpg
实例图解
Function.jpghttps://www.cnblogs.com/syomm/p/5942165.html
https://www.cnblogs.com/dominik/articles/10301449.html
https://www.cnblogs.com/douglasryan/p/10461866.html
https://www.cnblogs.com/yan-yubo/p/Javascript-built_in_objects.html
网友评论