每个实例对象(object)都有一个私有属性(称之为 __proto__ )指向它的构造函数的原型对象(prototype)

请问以下JS代码输出结果是什么?

console.log(typeof ''.prototype); console.log(typeof ''.__proto__); console.log(typeof ''.__proto__ === typeof ''.prototype);

undefined、object、false

官方解析:
每个实例对象(object)都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype),

所以prototype是构造函数用来获取原型对象的属性,proto

所以字是实例用来获取原型对象的属性符串的prototype属性是undefined,__proto__属性指向String原型对象。

针对本题,咱们先理解 prototype和__proto__ 的关系。

主要有以下三点:

1)函数(或构造函数)身上才有 prototype (prototype名字叫原型,原型是一个对象);

2)而其他任何通过构造函数实例化出来的对象(不包括null、undefined)身上都有 proto(__proto__是隐式原型,隐式原型也一个对象)

3)实例化对象的__proto__ 就是 构造函数的 prototype (===关系)

附:undefind 和 null 既没有prototype也没有 proto ,因为它俩不是函数,也不是函数实例化出来的对象

具体说明如下:

1)函数(或构造函数)身上才有 prototype (prototype名字叫原型,原型是一个对象); 例如:StringNumberBooleanArrayObject 2)而其他任何通过构造函数实例化出来的对象(不包括nullundefined)身上都有 __proto__(__proto__是隐式原型,隐式原型也一个对象) 例如: 'a' 是通过String函数实例化出来的对象(这里包括以下说的对象不是Objcet数据类型) 4 是通过Number函数实例化出来的对象 true是通过Boolean函数实例化出来的对象 [1,2,3]是通过Array函数实例化出来的对象 {}是通过Objec函数实例化出来的对象 3)实例化对象的__proto__ 就是 构造函数的 prototype 例如:'a'.__proto__ === String.protptype //true true.__proto__ === Boolean.prototype //true

__EOF__

本文作者龙陌
本文链接https://www.cnblogs.com/longmo666/p/17825448.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示