javascript - js中包装类型的小例子为什么会输出不一样的结果

查看:123
本文介绍了javascript - js中包装类型的小例子为什么会输出不一样的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

最近看到一个例子,主要是关于包装类型的
代码1:
var str='hello';

str.len=5;
console.log(str.len);    //undefined

代码2:
var str=new String("Hello");

str.len=5;
console.log(str.len);    //5

问题:为什么会出现这种情况

解决方案

有两个概念需要区分:基本字符串 和 字符串对象;具体可以看下 MDN

代码1中,var str = 'hello' 执行后,str 是一个基本字符串,str.len = 5执行时,str 会临时转换为字符串对象,这个 len 赋值在了临时对象上,而 console.log() 时会再次将 str 转换为一个临时字符串对象,这个新的临时对象当然没有属性 len咯;

而代码2中 var str = new String("Hello");执行后,通过 new 构造出来的 str 已经是一个对象了,为他赋值 len 属性显然是和一般的对象赋值是一致的。

这篇关于javascript - js中包装类型的小例子为什么会输出不一样的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆