JavaScript包装对象使用详解
JavaScript中的包装对象:理解底层机制,洞悉代码运行原理
在JavaScript的世界中,对象是一种复合值,是属性和已命名值的集合。通过“.”符号,我们可以引用对象的属性值。当属性值是一个函数时,我们称之为方法。你是否知道,即使是基本类型如字符串、数字和布尔值,也能表现出对象的行为和属性?这一切的奥秘,就在于JavaScript的包装对象。
让我们来看一段代码:
```javascript
var s = "hello world!";
var word = s.substring(sdexOf(" ")+1,s.length);
```
这里,变量s是一个字符串原始类型。它却拥有属性(如s.length)和方法(如sdexOf()、s.substring())。这是如何做到的呢?关键在于包装对象。
当我们在JavaScript中引用字符串s的属性时,字符串值会通过调用new String(s)的方式转换成对象。这个对象继承了字符串(String)对象的方法,并用于处理属性的引用。一旦属性引用结束,这个新创建的对象就会被销毁。
同样的,数字和布尔值也有各自的方法。通过Number()和Boolean()构造函数,我们可以创建一个临时对象。当我们存取字符串、数字或布尔值的属性时,创建的临时对象就是包装对象。null和undefined这两种类型没有包装对象,尝试访问它们的属性会导致类型错误(Uncaught TypeError)。
让我们再看一段代码:
```javascript
var s = "test";
s.len = 4; //给它设置一个属性
var t = s.len;
```
在这里,第二行代码创建了一个临时的字符串对象,并给其len属性赋值为4。这个对象在创建后随即被销毁。第三行代码尝试读取的len属性,实际上是在一个新的字符串对象上,而不是之前创建的那个临时对象上。t的值是undefined。
我们可以通过String(), Number(), Boolean()构造函数来显式创建包装对象。例如:
```javascript
var s = "test", n=1, b=true; //一个字符串、数字和布尔值
var S = new String(s); //一个字符串对象
var N = new Number(n); //一个数值对象
var B = new Boolean(b); //一个布尔对象
```
JavaScript会在必要时将包装对象转换成原始值。虽然包装对象常常表现出和原始值一样的行为,但它们并不总是相等。“==”等于运算符会将原始值和其包装对象视为相等,但“===”全等运算符会将它们视为不等。通过typeof运算符,我们也可以看到原始值和其包装对象的差异。例如:
①typeof(s); -> "string" ②typeof(S); -> "object" (同理适用于数字和布尔值)
以上就是关于JavaScript包装对象的详细。希望你能对JavaScript的底层原理有更深入的理解。如有任何疑问或建议,欢迎随时与我们交流。
编程语言
- JavaScript包装对象使用详解
- php实现水仙花数的4个示例分享
- PHP的password_hash()使用实例
- .net搜索查询并实现分页实例
- ASP.NET笔记之Calender的使用说明
- php 数组处理函数extract详解及实例代码
- jQuery的Ajax接收java返回数据方法
- 在asp.net(c#)下实现调用cmd的方法
- php精度计算的问题解析
- ASP.NET中URL Routing和IIS上URL Rewriting的区别
- vue登录注册及token验证实现代码
- 检查表单元素的值是否为空的实例代码
- jquery及js实现动态加载js文件的方法
- node.js多个异步过程中判断执行是否完成的解决方
- AngularJS模仿Form表单提交的实现代码
- CodeIgniter基本配置详细介绍