javascript包装对象实例分析


Posted in Javascript onMarch 27, 2015

本文实例讲述了javascript包装对象用法。分享给大家供大家参考。具体分析如下:

js对象是一种复合值:它是属性或已命名值得集合。

参考以下代码:

var s = "hello world";
var len = s.length;

在该例子中,s是字符串,而字符串不是对象,但为何会有属性呢?其实只要引用了字符串s的属性,js就会将字符串通过调用new String(s)的方式转换为对象,该对象继承了字符串的方法,并被用来处理属性的引用;一旦属性引用结束,这个新创建的对象就会被销毁(在实现上并不一定创建或销毁这个临时对象,但整个过程看来是这样)。

同字符串一样,数字和布尔值也具有各自的方法:通过Number()单核Boolean()构造函数创建临时对象,这些方法的调用都是来自于这个临时对象;然而null和undefined没有包装对象:访问他们的属性会造成类型错误。
比如以下代码:

var s0 = "hello world";
s0.len = 100;
var t = s.len; //t的值将为undefined

因为第2行创建临时对象后,立即将其销毁;第三行通过原始的字符串值创建一个新字符串对象,尝试读取其len属性,自然不存在。这段代码说明在读取字符串、数字和布尔值的属性值或方法时,表现的像对象一样。但如果你试图给其属性赋值,则会忽略这个操作:修改只是发生在临时对象上,而这个临时对象并未继续保留下来。
存取字符串、数字或布尔值的属性时临时创建临时对象称为包装对象。
我们可以显示建立一个字符串对象然后增添它的属性,自然该属性会一直保留下来:

var str = "hello world";
var objs = new String(str);
objs.len = 100;
var t = objs.len; //t将被赋值为100

js会在必要时将包装对象转换为原始值因此显示创建的对象和其对应的原始值常常但不总是表现的一样。==运算符将原始值和其包装对象视为相等;但===全等运算符将他们视为不等;另外通过typeof运算符可以看到原始值和包装对象的不同。

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jquery拖动插件(jquery.drag)使用介绍
Jun 18 Javascript
JavaScript简单修改窗口大小的方法
Aug 03 Javascript
JS onkeypress兼容性写法详解
Apr 27 Javascript
BootStrap tab选项卡使用小结
Aug 09 Javascript
详解JavaScript中的属性和特性
Dec 08 Javascript
bootstrap weebox 支持ajax的模态弹出框
Feb 23 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 Javascript
jQuery实现滚动效果
Nov 17 jQuery
详解vue2.0 资源文件assets和static的区别
Nov 27 Javascript
了解JavaScript中let语句
May 30 Javascript
vue的keep-alive用法技巧
Aug 15 Javascript
layui数据表格跨行自动合并的例子
Sep 02 Javascript
javascript操作select元素实例分析
Mar 27 #Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
Mar 27 #Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
Mar 27 #Javascript
jquery使用animate方法实现控制元素移动
Mar 27 #Javascript
jQuery获取标签文本内容和html内容的方法
Mar 27 #Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
Mar 27 #Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
Mar 26 #Javascript
You might like
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
python实现报表自动化详解
2017/11/16 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
某公司的.net工程师面试题笔试题
2013/11/22 面试题
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
共青团员自我评价
2015/03/10 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏
使用Redis实现分布式锁的方法
2022/06/16 Redis