理解JavaScript的临时包装对象
时间:2022-04-25
本文章向大家介绍理解JavaScript的临时包装对象,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Javascript语言中的对象和基础类型string、number、boolean都可以使用“.”符号访问属性和方法,但是本质上只有对象才可以使用“.”,那么基础类型在使用“.”时的内部机制是什么呢?
这里要引入一个概念:包装对象。
Javascript对象是一个复合值,他是一组属性和方法的集合,使用“.”符号可以直接访问其属性和方法,但是基础类型数据在使用“.”符号时,*Javascript解析器首先调用基础类型对应的构造函数构建一个临时包装对象,然后再访问包装对象的属性。比如以下代码:
let str = 'string';
str.len = 4;
alert(str.len); //undefined
上述代码中第二行使用“.”为str变量赋值属性len,这时Javascript解析器首先调用构造函数:
let strObj = new String(str);
strObj.len = 4;
属性len的赋值对象实际是字符串对象strOb,而不是字符串值str。随后访问str.len返回值是undefined。strObj便称为包装对象,这个包装对象是临时的,一旦属性的引用和操作执行完毕后便会被回收,也就是说在strObj.len = 4
执行完毕后,strObj便被回收,不可再次访问。
number和boolean值也有对应的构造函数Number()和Boolean()。
null和undefined没有包装对象,尝试使用“.”访问它们的属性会报错。
当然也可以手动创建基础类型对应的包装对象,有一点需要注意的是:包装对象和基础类型使用双等号==
判断返回true,但是恒等号===
返回false。开发过程中需要注意。
- 目标检测算法之SSD
- Hadoop学习笔记
- 利用硬链接和truncate降低drop table对线上环境的影响
- 手把手教你实现GAN半监督学习
- 【超全】C语言小白最容易犯的17种错误,你中了几个?
- Oracle 12.2新特性掌上手册 - 第五卷 RAC and Grid
- ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构
- 机器学习实战---线性回归提高篇之乐高玩具套件二手价预测
- 【Oracle12.2新特性掌上手册】-第八卷 PDB的快速创建与移除
- 《机器学习实战》学习笔记(十一):线性回归基础篇之预测鲍鱼年龄
- 你必须要知道CNN模型:ResNet
- CNN模型之SqueezeNet
- YOLO算法的原理与实现
- Batchnorm原理详解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- String - 345. Reverse Vowels of a String
- String - 186. Reverse Words in a String II
- String - 151. Reverse Words in a String
- String - 344. Reverse String
- String - 383. Ransom Note
- String - 58. Length of Last Word
- String - 14. Longest Common Prefix
- String - 28. Implement strStr()
- Subsequence - 187. Repeated DNA Sequences
- Subsequence - 392. Is Subsequence
- parentheses - 241. Different Ways to Add Parentheses
- parentheses - 32. Longest Valid Parentheses
- parentheses - 22. Generate Parentheses
- palindrome - 132. Palindrome Partitioning II
- palindrome - 131. Palindrome Partitioning