javascript - js中包装类型的小例子为什么会输出不一样的结果
伊谢尔伦
伊谢尔伦 2017-04-11 11:19:56
[JavaScript讨论组]

最近看到一个例子,主要是关于包装类型的
代码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

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
伊谢尔伦

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

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

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

PHP中文网

var str = 'hello';创建的是一个基本类型,是按值访问的,我们能不能给基本添加属性和方法,下面的这个var str = new String(“hello”);属于引用类型的(对象),可以添加属性和方法,所以是这种情况~

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号