对象.原型链,函数.原型对象
栏目: JavaScript · 发布时间: 5年前
内容简介:对象.原型链、函数.原型对象之间的关系只要想明白这四点,就通透了。哪四点呢?1.
对象.原型链、函数.原型对象之间的关系只要想明白这四点,就通透了。
哪四点呢?
1. 对象中,有个__proto__属性 ,
原型链的实现就是通过该属性;
2. 函数中,有个prototype属性 ,
这个属性是个对象, 叫做原型对象 ;
3. 对象 是由 对应的构造函数new 出来的,
所以, 对象的__proto__会指向构造函数的 prototype属性 ;
4. 函数也是个对象 ,是由 Function函数new 出来的,
所以,函数的__proto__会指向Fuction的 prototype属性 ;
另外, Function函数也构造了自己,Fucntion.__proto__ === Function.prototype;
说的多,不如看个图直观,看图的关键是把握:
对象被构造函数new出来后, 对象的_proto__ 会指向 构造函数的prototype属性
用上图,我们就可以解释很多神奇的现象了,
1. 原型链,也就是__proto__最后都指向了Object.prototype,而该原型对象的__proto__ === null;
2. Function instanceof Object === Object instanceof Fucntion === true;
instanceof通俗的说法是,判断左边对象是不是右边函数new出来的实例;这种说话就会让上述表达式很矛盾;但是,换个说法,instanceof本质上是用来,判断 右边函数的原型对象 是否在 左边对象的原型链 上;
由于Fuction函数和Object函数都是由Function函数new出来的,导致Function.__proto__和Object.__proto__指到一块去了,而Function.prototype和Object.prototype正好都在链上,所以就造就了上述的神奇表达式。
参考:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 创建对象、原型、原型链
- 【前端基础进阶】JS原型、原型链、对象详解
- 说说JS中的原型对象和原型链
- 《JavaScript面向对象精要》之四:构造函数和原型对象
- 由对象到原型
- 前端进击的巨人(七):走进面向对象,原型与原型链,继承方式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Development Recipes
Brian P. Hogan、Chris Warren、Mike Weber、Chris Johnson、Aaron Godin / Pragmatic Bookshelf / 2012-1-22 / USD 35.00
You'll see a full spectrum of cutting-edge web development techniques, from UI and eye candy recipes to solutions for data analysis, testing, and web hosting. Make buttons and content stand out with s......一起来看看 《Web Development Recipes》 这本书的介绍吧!