基本包装类

js中为了便于基本类型操作,提供了3个特殊的引用类型:Boolean、Number、String它们具有基本类型特殊行为。

实际上,每当读取一个基本类型的时候,js内部会自动创建一个基本包装类型对象,可以让我们调用一些方法来操作。

let str = 'hello 蛙人'
let str1 = str.substring(2)

上面example中,str是一个字符串类型,然而它调用了substring方法,并将结果保存在了str1中,我们知道基本类型不是对象,我们就会想,哎 它不是对象为什么能调用方法,其实js内部已经实现了一系列的处理,当执行第二行代码时,访问过程处于一种读取状态,也就是要从内存中读取这个字符串的值。那js内部是怎么处理的呢,看下面。

  1. 创建String类型的实例
  2. 在实例上调用指定的方法
  3. 最后销毁该实例
let str = new String('hello 蛙人')
let str1 = str.substring(2)
str1 = null

经过上面的加工后,基本字符串变的跟对象一样,上面这三个步骤也适用于Boolean、Number类型。


那么有的小伙伴就会疑惑,引用类型和基本包装类有什么不同呢,最主要的区别就是对象的生存期

  • 引用类型:使用new操作符创建的引用类型实例,在执行流离开当前作用域之前一直都保存在内存中,
  • 基本包装类型:只存在一行代码的执行瞬间,然后立即销毁
    基本包装类意味着我们不能在运行时为对象添加属性及方法,因为它们执行完后会立即销毁
let str = '蛙人'
str.age = 23
console.log(str.age) // undefined

上面第二行代码中,为“蛙人“添加 age 属性,但是在下面打印发现是 undefined,问题就在于,第二行代码执行完后立即销毁,第三行代码再次创建String对象发现没有该age属性。


如果觉得写的不错的话,那就点个赞叭!

JavaScript基本包装类型相关推荐

  1. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(第五章:基本引用类型,原始值包装类型,单例内置对象)

    第五章:基本引用类型 引用值(或者对象)是某个特定引用类型的实例.新对象通过使用new操作符后跟一个构造函数(constructor)来创建. 5.1 Date 这里不对Date进行详细深入,仅基于书 ...

  2. Javascript第六章基本包装类型第八课

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  3. 《JavaScript高级程序设计》五、引用类型(基本包装类型)

    <JavaScript高级程序设计>五.引用类型(基本包装类型) 目录: Boolean类型 Number类型 String类型 字符方法 字符位置方法 字符操作方法 字符大小转换方法 字 ...

  4. 【JavaScript】9.基本引用类型-原始值包装类型

    本篇笔记示例代码仓库:https://github.com/zhangtuo1999/study-js . 本篇笔记遵循中文技术文档的写作规范. 主要内容来源于<JavaScript高级程序设计 ...

  5. 《JavaScript高级程序设计 (第3版)》学习笔记15:chapter_5 - 6 基本包装类型

    让学习"上瘾",成为更好的自己! <!DOCTYPE html> <html lang="en"> <head><me ...

  6. 理解JavaScript的原始类型

    2019独角兽企业重金招聘Python工程师标准>>> JavaScript中的原始类型(primitive type)包括Undefined.Null.Number.Boolean ...

  7. JS-9 JS常见内置类;包装类型;Number类方法与实例方法;Math方法;String类常见方法;数组方法(增删改查+遍历+排序);时间Date 构造函数+获取信息+设置信息+获取Unix时间戳

    目录 1_包装类型 2_Number类补充 3_Math对象 4_String类的补充 4.1_基本使用 4.2_修改字符串 4.3_查找.替换字符串 开头与结尾 4.4_获取子字符串 4.5_其他方 ...

  8. CSDN日报190929:面试官:兄弟,说说基本类型和包装类型的区别吧

    CSDN日报来啦!给大家奉上当日最新鲜的技术干货! 深度学习|[深度学习] 自然语言处理-Attention 作者:小墨鱼~~ 要了解深度学习中的注意力模型,就不得不先谈Encoder-Decoder ...

  9. JS 原始值包装类型

    为了方便操作原始值,ECMAScript 提供了 3 种特殊的引用类型:Boolean.Number 和 String.每当用到某个原始值的方法或属性时,后台都会创建一个相应原始包装类型的对象,从而暴 ...

最新文章

  1. Flask的flask-sqlalchemy
  2. 华硕笔记本:Ubuntu 18.04安装Nvidia驱动
  3. 程序员面试金典 - 面试题 02.05. 链表求和
  4. mysql 索引_MySQL之索引
  5. bitherj java_比太钱包为什么从 Bitcoinj 切换到了 Bitherj ?比太钱包从 Bitcoinj 切换到了 Bitherj原因是什么?...
  6. java对象名不可以是_java运行一个方法时如何得到该个对象的名字(不是类的名字)....
  7. 解决:System.Data.SqlClient.SqlException: 超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32)....
  8. Servlet总结1---基础东西的介绍
  9. ArcGIS 遥感图像分类—随机树和最大似然分类器
  10. 裸辞1天 vs 裸辞10天 vs 裸辞一个月
  11. android 查看 屏幕刷新率,屏幕刷新率检查app
  12. cad墙线打断lisp_两个打断程序 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - 程序 - Powered by Discuz!...
  13. 常用Unity平台解释
  14. MKB0805心率血压模块使用方法
  15. 苹果处理器排行_最新 iOS 性能排行榜,你的设备落伍了吗?
  16. 电磁学基本知识与基本定律复习
  17. Disruptor并发框架,核心组件RingBuffer
  18. 咸鱼APP产品使用报告体验分析
  19. 从低代码到无代码:可视化逻辑编排
  20. [博学谷学习记录]超强总结,用心分享|Hive的压缩格式

热门文章

  1. 用C++语言实现贪吃蛇游戏
  2. CSDN官方指定推广功能上线【第12期*2021.9.8】
  3. 失业的程序员(九):创业就是一场戏
  4. 未能从hitman服务器,愤怒的小鸟 2无法连接服务器是什么原因
  5. Archlinux安装应用程序出现warning: cannot resolve “lib32-*“错误
  6. 巨巨巨详细Java安装教程,看了都都会了,没看的都悔了
  7. [转]webshell原理简介
  8. SqlSession
  9. JAVA学习笔记(四十九)- Swing相关组件
  10. android隐藏开发者选项,开发人员选项怎么关闭?安卓手机开发人员选项功能隐藏方法介绍...