__proto__

来源:15-13 原型和原型链-代码演示

V金龙V

2017-12-01

var str1 = '123';

var str2 = new String('456');

str1.__proto__ === str2.__proto__

我记得老师在课上讲过,引用类型才有__proto__这个属性,为啥这里这个值类型会有__proto__这个属性呢?


写回答

2回答

双越

2017-12-01

首先你应该先问:值类型有属性吗?

其实,这里有一个弯儿,就是访问值类型的属性时,js 会默默的将值类型转换为引用类型的形式,然后再去执行。例如 str1.length str1.replace 等等。

你说的 str1.__proto__ 也是一个道理

0
2
兮漫天
回复
V金龙V
是这么一回事!
2019-04-26
共2条回复

兮漫天

2019-04-26

去理解下基本包装类型就明白了哈~因为  string number boolean 在使用一些方法的时候,会自动转为基本包装类型!基本包装类型也是一个对象,只不过是对象的实例,所以有__proto__,这也是ECMA里面对于js戏称万物皆对象的其中一个版本的由来......

0
0

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程