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 相关文章推荐
js计数器代码
Nov 04 Javascript
javascript 原型模式实现OOP的再研究
Apr 09 Javascript
js显示文本框提示文字的方法
May 07 Javascript
简单实现js间歇或无缝滚动效果
Jun 29 Javascript
微信小程序网络请求的封装与填坑之路
Apr 01 Javascript
easyui-datagrid开发实践(总结)
Aug 02 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
vue 过滤器filter实例详解
Mar 14 Javascript
浅谈js中的bind
Mar 18 Javascript
微信小程序 弹窗输入组件的实现解析
Aug 12 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
vue中的计算属性和侦听属性
Nov 06 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生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
Puppeteer使用示例详解
2019/06/20 Python
python开发入门——列表生成式
2020/09/03 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
ktv收银员岗位职责
2013/12/16 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS