最近看到一个例子,主要是关于包装类型的代码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
属性显然是和一般的对象赋值是一致的。
添加回答
举报
0/150
提交
取消