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包装对象相关推荐

  1. JavaScript读书笔记(三)布尔值,null,undefined,全局对象,包装对象

    参照内容来自<JavaScript权威指南> 布尔值 任意JavaScript的值都可以转换为布尔值. 部分值会被转换为false,其他转换为true. 会被转换为false的有:(1)u ...

  2. JavaScript 原始值与包装对象

    前言 随着 JavaScript 越来越流行,越来越多地开发者开始接触并使用 JavaScript. 同时我也发现,有不少开发者对于 JavaScript 最基本的原始值和包装对象都没有很清晰的理解. ...

  3. JavaScript 基本类型与基本类型包装对象

    问题思考 阅读以下代码: const str1 = 'str1'; const str2 = new String('str2');typeof str1; // string typeof str2 ...

  4. 前端自学之路 Javascript 行话浅析(一)——字面量 包装对象 作用域

    文章目录 直接量(literal) Undefine NULL 包装对象 变量作用域 函数作用域 块级作用域 作用域链 变量解析 引用错误 本篇主要涉及较为基础的, 变量, 作用域方面的名词. 为啥要 ...

  5. JavaScript 复制对象与Object.assign方法无法实现深复制

    在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...

  6. Object(包装对象)

    包装对象定义 对象是 JavaScript 语言最主要的数据类型, 三种原始类型的值--数值.字符串.布尔值-- 在一定条件下,也会自动转为对象,也就是原始类型的"包装对象"(wr ...

  7. JavaScript:对象都是这样生成的!

    头图 | CSDN下载自视觉中国 作者 | flydean  责编 | 张文 来源 | 程序那些事(ID:flydean-tech) 本文将会深入讲解面向对象在 javascript 中的应用,并详细 ...

  8. JavaScript的对象、属性与方法

    目录 一.JavaScript的预解析 二 .JavaScript的对象(面向对象编程) 1.对象:是一种数据类型.是属性和方法的集合 (1)属性:是对象的静态特征 (2)方法(函数):是对象的动态特 ...

  9. 「译」一起探讨 JavaScript 的对象

    「译」一起探讨 JavaScript 的对象 原文地址:Let's explore objects in JavaScript 原文作者:Cristi Salcescu 译文出自:阿里云翻译小组 译文 ...

最新文章

  1. Linux下利用rsync实现网站镜像同步
  2. 【转】简单的java缓存实现
  3. linux命令总结之traceroute命令
  4. (4) hibernate增删查改+批量操作+类似Mybatis动态sql
  5. 设计一代码,逆置带头结点的动态单链表L
  6. http://www.tldp.org/LDP/abs/abs-guide.txt.gz
  7. 清除python shell中的内容_如何使用python脚本定时清空文件内容?
  8. matlab时域分析论文,基于Matlab语言的数字信号时域相关性研究与分析.doc
  9. 京东到家休闲食品即时消费趋势报告
  10. 360扫地机原理大揭秘,竟还有无人驾驶技术?——浅析家用机器人SLAM方案
  11. c语言程序构建,c语言开发环境构建及简单的c程序设计.doc
  12. 互联网公司忽悠员工的黑话,套路太深了。。
  13. react-native 适配问题
  14. Hbase 操作命令
  15. Win10 外接显示器,Chrome花屏/视频全屏黑屏解决方法
  16. linux中流设备_Linux纯干货知识总结|面试专用
  17. ajax页面拼接html,ajax请求拼接html代码
  18. ef+mysql配置
  19. 神奇的口袋 C++ 三种方法(枚举,递归,动态规划)
  20. Unity 获取手机触摸方法

热门文章

  1. java 选中当前,Java开发网 - 请问如何获得SWT中List widget当前选中的项目
  2. 英雄联盟祖安服务器位置,LOL“4区版英雄联盟”:城区有2个,郊区有2个,山区有1个...
  3. 搜索长度未知的有序数组java_java二分法实现在有序的数组中定位某数在数组中的位置...
  4. android opencv 识别文字_基于SpringBoot的车牌识别系统(附项目地址)
  5. altium designer 单层显示切换两次_新论文:北京新机场装配式单层铝合金网壳结构整体稳定性能研究...
  6. android palette组件用法,Palette颜色提取使用详解
  7. django_form表单类
  8. 探讨浏览器CSS选择器的权重!!!
  9. 一次“内存泄露”引发的血案
  10. 《leetcode》two-sum