/*
* 我们需要牢记两点:
* 1. __proto__属性是对象所独有的;
* 2. constructor属性: 只有prototype对象才有这个属性,而其它对象的constructor属性都是通过__proto__对象从prototype继承而来
* 3. prototype属性是函数所独有的,因为函数也是一种对象,所以函数也拥有__proto__和constructor属性。
* __proto__属性的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个对象(父对象)里找,一直找,
* 直到__proto__属性的终点null,然后返回undefined,再往上找就相当于在null上取值,会报错。通过__proto__属性将对象连接起来的这条链路即我们所谓的原型链。
* prototype属性的作用就是让该函数所实例化的对象们都可以找到公用的属性和方法,即f1.__proto__ === Foo.prototype。
* constructor属性的含义就是指向该对象的构造函数,所有函数(此时看成对象了)最终的构造函数都指向Function。 另外 __proto__ 属性是浏览器对es5的实现,而不是es标准。
* */
// 互相继承
console.log(Object instanceof Function); // true
console.log(Function instanceof Object); // true
console.log(Object.constructor)
console.log(Function.constructor)
function demo () {}
//tips:单从constructor属性来讲,只有prototype对象才有这个属性,而其它对象的constructor属性都是通过__proto__对象从prototype继承而来
console.log(demo.constructor === Function) // true
console.log(demo.prototype.constructor === demo) // true
// 函数在创建时,JS会为该函数创建一个对应的prototype对象,而这个prototype对象的constructor属性又指向该函数,demo.prototype.constructor === demo
const a = new Object()
console.log(typeof Object); // function
console.log(typeof a) // object
console.log(typeof Object.__proto__) // function
console.log(typeof a.__proto__) // object
JS中的prototype、__proto__与constructor
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- https://blog.csdn.net/cc18868876837/article/details/81211729
- 文章目录 1. 前言[https://blog.csdn.net/cc18868876837/article/de...
- 原文地址 blog.csdn.net[https://blog.csdn.net/cc18868876837/ar...
- 本文基于谷歌浏览器(版本 72.0.3626.121)的实验结果所得。 我们从如下一个简单的例子展开讨论,并配以相...
- js里的proto和prototype到底有什么区别?https://www.jianshu.com/p/80bc...