为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

12345678_0001 2018-10-11 13:26:55
最近看到一个例子,主要是关于包装类型的代码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问题:为什么会出现这种情况
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

有两个概念需要区分:基本字符串 和 字符串对象;

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

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


查看完整回答
反对 回复 2018-11-09
  • 1 回答
  • 0 关注
  • 561 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信