您的位置:首页> 前端教程> JS教程
文章导航

JavaScript 包装对象

2019-4-13 22:13| 作者: admin| 查看: 421| 评论: 0|来自: 蚂蚁部落

无论生活中还是工作中,都有很多习以为常的现象或者认为理所应当的事情。

但是如果真的去探究其中的来龙去脉或者原理,可能未必能那么清晰,甚至让人感觉匪夷所思。

比如苹果落地现象,普通人肯定感觉这是理所当然的事情,如果不是牛顿多思,岂能发现万有引力。

也由此可见,在学习中要重视每一个细节,因为里面可能隐藏着自己尚未掌握的知识。

JavaScript中也有类似的现象,首先看一段简单代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
var str = "antzone";
console.log(str.length);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/13/221603eaf5dzx5f9jpha2x.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上面代码非常简单,通过length属性打印出字符串包含的字符的个数。

笔者当年初学的时候同样感觉上述代码是如此简单,根本无需做任何说明。

但是如果深究下去可能会产生一些疑问,分步阐述如下:

(1).JavaScript数据分为值类型与引用类型,引用类型也就是通常所说的对象。

(2).只有对象才有可能拥有方法或者属性,然后通过点(.)或者其他方式使用这些属性或者方法。

(3).但上面的str很明是一个值类型数据,为什么也能够使用length属性呢。

关于数据类型相关知识可以参阅如下两篇文章:

(1).JavaScript 值类型和引用类型一章节。

(2).JavaScript 数据类型一章节。

上述现象分析如下:

(1)."antzone"确实是值类型数据,但是当通过点(.)使用length属性的时候。

(2).内部会自动将值类型数据临时转换为对应的字符串对象,于是就可以使用此属性了。

(3).这个临时生成的对象就是本文所要介绍的包装对象。

(4).此包装对象会在调用完属性后立即销毁。

再来看一段代码简单的代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
var str = "antzone";
str.len = 5;
console.log(str.len)

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/13/221740itjr11to115sjj8r.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述代码打印结果为undefined,代码分析如下:

(1).当为自定义属性len赋值的时候,会生成一个包装对象。

(2).这个包装对象会在赋值结束后立马被销毁,自然len属性值也被一并销毁了。

(3).当去打印str.len值的时候,又会临时生成一个包装对象,但此时len的值是undefined。

上面对包装对象进行了简单的分析,如果文章有任何问题或者对文章有任何的建议可以在底部留言。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部