码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript基础学习之-JavaScript权威指南-3.6包装对象

时间:2015-08-15 13:15:53      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

JavaScript对象是一种复合值,是已知属性或是命名值的集合。

我们看到字符串也同样有属性和方法。

var s = "Test";
var len=s.length;

  我们知道在JavaScript中像上面这样声明的字符串不是对象,但既然这里的s不是对象,为什么会有length的属性呢?

  原因是在JavaScript中只要引用了字符串(数字、布尔值也是一样的)的属性,JS就会将字符串通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。

      注意:一旦属性引用结束,这个新创建的对象就会销毁(真实实现并不一定是这样,但整个过程看起来是这样)。这个创建的对象就叫包装对象。

  有没有办法验证上面的解释呢,我们来看两段代码:

  代码一:

var s = "Test";
s.len=10;//创建包装对象(new String()),并添加len属性,然后销毁
var t = s.len;//创建新的字符串对象,读取len属性,由于不存在所以结果是 undefined

  这段代码说明了,在读取字符串、数字和布尔值的属性值时表现的对象一样,但是赋值时则会忽略操作,修改只是修改到了临时对象上。  

   如果我们想要保存len的长度怎么办?

  代码二:

var s = new String("Test");
s.len = 10;
var t = s.len;//10

  显示创建包装对象,保存属性值。

 

  最后一点需要注意的是,原始对象和包装对象不严格相等:

var s = "Test", S=new String("Test");
console.log(s == S);//true
console.log(s === S);//false

JavaScript基础学习之-JavaScript权威指南-3.6包装对象

标签:

原文地址:http://www.cnblogs.com/x739400043/p/4732076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!