js原型链
图片引自https://juejin.im/post/5b44a4...
看到这张图的第一感觉是
对于完整的原型链大家平常可能接触的并不多,容易忘记,单看图并不是很好理解,以下是在控制台的输出
首先要知道_proto_的作用,__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性。指向自身构造函数的原型,同理调用prototype可以看作调用者是函数,__proto__调用者可以看成是对象
以Object开始直到回到Object
Object.constructor => ƒ Function() { [native code] } 等同于 function Function { [native code] } Object的构造函数其实是一具名函数 Function Object.constructor.constructor => ƒ () { [native code] } 等同于匿名函数 function(){ [native code] } Object.constructor.__proto__ == Object.constructor.prototype => ƒ () { [native code] } Object.constructor.__proto__.constructor => ƒ Function() { [native code] } 等同于 function Function { [native code] } Object.constructor.__proto__.__proto__ => Object.prototype 如下 {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …} Object.constructor.__proto__.__proto__.constructor => Object 又回到了自己 Object.constructor.__proto__.__proto__.__proto__ => Null
至于程序为什么这么设计,这里就不再讨论了,有一点 一开始学习记住是什么比为什么更重要,因为谁也解释不了1+1为什么等于二,记忆很重要
相关推荐
Zhongmeishijue 2020-09-10
zhongshish 2020-10-21
嵌入式移动开发 2020-08-17
jinfeng0 2020-08-03
uileader 2020-07-18
jameszgw 2020-06-21
VanTYS 2020-05-20
chvnetcom 2020-05-20
THEEYE 2020-05-19
yanglin 2020-05-02
钟鼎 2020-05-01
嵌入式移动开发 2020-04-10
THEEYE 2020-03-26
chvnetcom 2020-02-03
嵌入式移动开发 2020-01-23
gougouzhang 2020-01-12
TingBen 2019-12-29
chvnetcom 2020-01-06
First00 2020-01-04