原始对象和包装对象

  我们先看段代码:

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

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

  原因是在JavaScript中只要引用了字符串(数字、布尔值也是一样的)的属性,JS就会将字符串通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会销毁(真实实现并不一定是这样,但整个过程看起来是这样)。这个过程就叫包装对象。

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

  代码一:

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

  代码二:

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
时间: 2024-08-14 05:01:51

原始对象和包装对象的相关文章

包装对象——JavaScript中原始类型拥有属性的原因

我们先看段代码: var s = "Test"; var len=s.length; 我们知道在JavaScript中像上面这样声明的字符串不是对象,但既然这里的s不是对象,为什么会有length的属性呢? 原因是在JavaScript中只要引用了字符串(数字.布尔值也是一样的)的属性,JS就会将字符串通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用.一旦属性引用结束,这个新创建的对象就会销毁(真实实现并不一定是这样,但整个过程看起

标准库》第三章 包装对象和Boolean对象

第三部分  标准库 ***************第三章   包装对象和Boolean对象******************* 一.包装对象的定义[1]有人说,JavaScript语言"一切皆对象",数组和函数本质上都是对象,就连三种原始类型的值--数值.字符串.布尔值--在一定条件下,也会自动转为对象,也就是原始类型的"包装对象". 所谓"包装对象",就是分别与数值.字符串.布尔值相对应的Number.String.Boolean三个原生对象

javascript之包装对象

var s = "hello world!";             var word = s.substring(s.indexOf(" ")+1,s.length); 字符串既然不是对象,为什么它会有属性呢?只要引用了字符串s的属性,javascript就会将字符串值通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用.一旦属性引用结束,这个新创建的对象就会销毁(其实在实现上并不一定创建或销毁这个临时对象,然而

js基础学习之-js包装对象

1 var test = "test"; 2 test.a = "hello"; 3 console.log(test.a); //undifined 定义: 在JavaScript中,“一切皆对象”,数组和函数本质上都是对象,就连三种原始类型的值——数值.字符串.布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”. 通俗来讲: 字符串,数值,字符串,这些单身狗看其它人都有对象,非常不爽,所以自己也搞了个对象,名字叫包装. 1 console.l

javascript类型系统——包装对象

× 目录 [1]定义 [2]生存期 [3]显式创建[4]转型函数[5]比较运算 前面的话 javascript对象是一种复合值,它是属性或已命名值的集合.通过'.'符号来引用属性值.当属性值是一个函数时,称其为方法.通过o.m()来调用对象o中的方法.我们发现,字符串也同样具有属性和方法 var s = 'hello world'; console.log(s.length);//11 字符串既然不是对象,为什么它会有属性呢?这就引出了今天介绍的内容——包装对象 定义 包装对象是特殊的引用类型.

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

JavaScript对象是一种复合值,是已知属性或是命名值的集合. 我们看到字符串也同样有属性和方法. var s = "Test"; var len=s.length; 我们知道在JavaScript中像上面这样声明的字符串不是对象,但既然这里的s不是对象,为什么会有length的属性呢? 原因是在JavaScript中只要引用了字符串(数字.布尔值也是一样的)的属性,JS就会将字符串通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引

javascript包装对象

  javascript对象是一种复合值,它是属性或已命名的值的集合,通过符号"."来引用属性值,当属性值是一个函数的时候,我们称之为方法.我们看到字符串也具有属性和方法: var s="hello,world!"; var word=s.substring(s.indexof("")+1,s.length); 字符串既然不是对象,为什么它又有属性呢,只要引用了字符串s的属性,javascript就会将字符串值通过调用new String(s)的

__x__(75)1012第十三天__ JavaScript 包装对象

包装对象 所谓“包装对象”,就是分别与数值.字符串.布尔值相对应的Number.String.Boolean三个原生对象 这三个原生对象可以把原始类型的值变成(包装成)对象 var v1 = new Number(123); var v2 = new String('abc'); var v3 = new Boolean(true); typeof v1 // "object" typeof v2 // "object" typeof v3 // "obj

每日分享!~ vue JavaScript中为什么可以读取到字符串的长度!(包装对象)

首先需要知道什么是包装对象? 对象是JavaScript语言下最主要的数据类型,三种原始的值-----数值,字符串,布尔值,在一定条件下会自动的转为对象.也就是原始类型的包装对象: 也就是通过如下方式: Var v1 = new Number(123). // 检测v1 的数据类型,发现v1 竟然是object    ,当然包装对象和原始数据类型不再相等. 总结: 这三个原始的数据类型通过构造函数使用new时,可以将原始类型的值转换成对象.作为普通函数使用的时候,可以将任意类型的值,转为原始的值