网站首页 > 技术文章 正文
我们在前文说到,所有的对象都是通过new 函数来创建的,所有的函数也都是对象 . 那么问题来了,Function也是一个函数,那么他是怎么来的呢?(这个问题是不是类似有点像先有鸡和先有蛋的感觉)但是Function函数是在js引擎启动的时候,就直接把Function放入到内存中的.
原型 prototype
所有函数都有一个属性: prototype,称之为原型 .
prototype在默认情况下是一个object对象.
默认情况下, prototype中有一个属性: constructor, constructor本身也是一个对象,他们之间的关系如下:
通过上图我们知道,函数的原型的构造函数 和 函数本身是一模一样的.
原型有啥用呢?为啥原型的构造函数又要等函数呢?
隐士原型 __proto__
所有的对象都有一个属性: __proto__, 这个属性称之为隐士原型.
隐士原型默认情况下指向创建该对象的函数的原型.
用一幅图来总结一下:
对象访问属性的查找方式
对象在查找属性的时候,如果本身不存在的话,他会一层一层查找自己的隐士原型(proto),找到后返回.知道找到null后返回undefined
既然人家可以在原型上加方法,咋们也可以在原型中加方法,但是这样做会造成原型的污染.
原型链
原型链是啥子呢,我们先来解释链条,链条就是有有限个铁环相互连接在一起,形成一根有限长度的链条.原先链肯定就是有有限个__proto__连接起来的链条,我们称之为原型链.
如上图我们看到的 newA.__proto__.__proto__.__proto__ 这种在每个对象之间都通过 __proto__ 是不是有点像链条呢.
原型链路
- Function的__proto__ 和Function的prototype是指向同一个地址的
- 隐士原型的最终指向是null;
- Object的__proto__和 Function的原型执行同一个地址.
猜你喜欢
- 2024-11-10 这样理解 JS 原型链,通透 js原型链的理解
- 2024-11-10 JavaScript-原型链 javascript 原型,原型链 ? 有什么特点?
- 2024-11-10 javascript原型链 js原型链的用处
- 2024-11-10 js 原型/原型链/构造函数/实例/继承
- 2024-11-10 【JavaScript 高级】深入了解原型链
- 2024-11-10 快速读懂JavaScript中的原型链 js的原型和原型链是什么
- 2024-11-10 你可能不太理解的JavaScript - 原型与原型链
- 2024-11-10 我在jacascript中学习到的那些原型链,你知道吗?
- 2024-11-10 JavaScript中的原型prototype和__proto__的区别及原型链概念
- 2024-11-10 面试问题分享 - 5:解释一下 原型、构造函、实例、原型链 之间的关系
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-