javascript包装对象
2015-03-13 15:48
190 查看
js对象是一种复合值:它是属性或已命名值得集合。
参考以下代码:
在该例子中,s是字符串,而字符串不是对象,但为何会有属性呢?其实只要引用了字符串s的属性,js就会将字符串通过调用new String(s)的方式转换为对象,该对象继承了字符串的方法,并被用来处理属性的引用;一旦属性引用结束,这个新创建的对象就会被销毁(在实现上并不一定创建或销毁这个临时对象,但整个过程看来是这样)。
同字符串一样,数字和布尔值也具有各自的方法:通过Number()单核Boolean()构造函数创建临时对象,这些方法的调用都是来自于这个临时对象;然而null和undefined没有包装对象:访问他们的属性会造成类型错误。
比如以下代码:
因为第2行创建临时对象后,立即将其销毁;第三行通过原始的字符串值创建一个新字符串对象,尝试读取其len属性,自然不存在。这段代码说明在读取字符串、数字和布尔值的属性值或方法时,表现的像对象一样。但如果你试图给其属性赋值,则会忽略这个操作:修改只是发生在临时对象上,而这个临时对象并未继续保留下来。
存取字符串、数字或布尔值的属性时临时创建临时对象称为包装对象。
我们可以显示建立一个字符串对象然后增添它的属性,自然该属性会一直保留下来:
js会在必要时将包装对象转换为原始值因此显示创建的对象和其对应的原始值常常但不总是表现的一样。==运算符将原始值和其包装对象视为相等;但===全等运算符将他们视为不等;另外通过typeof运算符可以看到原始值和包装对象的不同。
参考以下代码:
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包装对象
- JavaScript包装对象使用详解
- javascript标准对象与包装对象
- JavaScript包装对象
- javascript一些让人迷惑的地方--基本数据类型的包装对象
- javascript 面向对象基础(二) 包装对象原型链
- JavaScript之包装对象
- javascript包装对象实例分析
- 【JavaScript 从零开始】 数字 文本 包装对象
- 包装对象——JavaScript中原始类型拥有属性的原因
- javascript包装对象
- JavaScript包装对象(转)
- JavaScript包装对象使用详解
- javascript包装对象
- JavaScript包装对象使用介绍
- JavaScript包装对象使用介绍
- JavaScript 类型的包装对象(Typed Wrappers)
- JavaScript Core -- 包装对象
- Javascript面向对象及组件详细介绍(四)包装对象