前端学习<四>JavaScript基础——14-基本包装类型

news2025/2/28 11:58:06

基本数据类型不能绑定属性和方法

属性和方法只能添加给对象,不能添加给基本数据类型。我们拿字符串来举例。

1、基本数据类型:

基本数据类型string无法绑定属性和方法的。

 var str = 'qianguyihao';
 ​
 str.aaa = 12;
 console.log(typeof str); //打印结果为:string
 console.log(str.aaa); //打印结果为:undefined

上方代码中,当我们尝试打印str.aaa的时候,会发现打印结果为:undefined。也就是说,不能给 string 绑定属性和方法。

当然,我们可以打印 str.length、str.indexOf("m")等等。因为这两个方法的底层做了数据类型转换(临时string 字符串转换为 String 对象,然后再调用内置方法),也就是我们在下一段将要讲到的包装类

2、引用数据类型:

引用数据类型String是可以绑定属性和方法的。如下:

 var strObj = new String('smyhvae');
 strObj.aaa = 123;
 console.log(strObj);
 console.log(typeof strObj); //打印结果:Object
 console.log(strObj.aaa);

打印结果:

内置对象 Number 也有一些自带的方法,比如:

  • Number.MAX_VALUE;

  • Number.MIN_VALUE;

内置对象 Boolean 也有一些自带的方法,但是用的不多。

基本包装类型

介绍

我们都知道,JS 中的数据类型包括以下几种。

  • 基本数据类型:String 字符串、Number 数值、BigInt 大型数值、Boolean 布尔值、Null 空值、Undefined 未定义、Symbol。

  • 引用数据类型:Object 对象。

JS 为我们提供了三个基本包装类

  • String():将基本数据类型字符串,转换为 String 对象。

  • Number():将基本数据类型的数字,转换为 Number 对象。

  • Boolean():将基本数据类型的布尔值,转换为 Boolean 对象。

通过上面这这三个包装类,我们可以将基本数据类型的数据转换为对象

代码举例:

 let str1 = 'qianguyihao';
 let str2 = new String('qianguyihao');
 ​
 let num = new Number(3);
 ​
 let bool = new Boolean(true);
 ​
 console.log(typeof str1); // 打印结果:string
 console.log(typeof str2); // 注意,打印结果:object

需要注意的是:我们在实际应用中一般不会使用基本数据类型的对象。如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果。

比如说:

 var boo1 = new Boolean(true);
 var boo2 = new Boolean(true);
 ​
 console.log(boo1 === boo2); // 打印结果竟然是:false

再比如说:

 var boo3 = new Boolean(false);
 ​
 if (boo3) {
     console.log('qianguyihao'); // 这行代码竟然执行了
 }

基本包装类型的作用

当我们对一些基本数据类型的值去调用属性和方法时,JS引擎会临时使用包装类将基本数据类型转换为引用数据类型(即“隐式类型转换”),这样的话,基本数据类型就有了属性和方法,然后再调用对象的属性和方法;调用完以后,再将其转换为基本数据类型。

举例:

 var str = 'qianguyihao';
 console.log(str.length); // 打印结果:11

比如,上面的代码,执行顺序是这样的:

 // 步骤(1):把简单数据类型 string 转换为 引用数据类型  String,保存到临时变量中
 var temp = new String('qianguyihao');
 ​
 // 步骤(2):把临时变量的值 赋值给 str
 str = temp;
 ​
 //  步骤(3):销毁临时变量
 temp = null;
 ​

在底层,字符串以字符数组的形式保存

在底层,字符串是以字符数组的形式保存的。代码举例:

 var str = 'smyhvae';
 console.log(str.length); // 获取字符串的长度
 console.log(str[2]); // 获取字符串中的第3个字符(下标为2的字符)

上方代码中,smyhvae这个字符串在底层是以["s", "m", "y", "h", "v", "a", "e"]的形式保存的。因此,我们既可以获取字符串的长度,也可以获取指定索引 index 位置的单个字符。这很像数组中的操作。

再比如,String 对象的很多内置方法,也可以直接给字符串用。此时,也是临时将字符串转换为 String 对象,然后再调用内置方法。

写在最后:希望大家可以点个关注点个赞,这对up真的很重要!谢谢!

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1585086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于maven项目下载依赖地址非指定配置文件地址

情形:新建idea项目后去指定setting文件下的仓库路径下载依赖 当去下载依赖时报错的地址并非我所指定的setting-aly.xml下的地址 最后发现idea 依赖的下载并没有去我所指定的setting-aly.xml去下载依赖而是默认去了setting.xml文件下去下载 结论:改为s…

【示例】Mybatis-标签学习+Mybatis工作流程

前言 本文主要学习Mybatis相关标签的使用及Mybatis的工作流程。 文中用到的示例,代码存储位置: GitHubhttps://github.com/Web-Learn-GSF/Java_Learn_Examples父工程Java_Framework_Mybatis 基础 示例 | 初始Mybatis 数据库初始化 -- 建表 CREATE…

Golang | Leetcode Golang题解之第22题括号生成

题目: 题解: var res []stringfunc generateParenthesis(n int) []string {res make([]string, 0)dfs(n, 0, 0, "")return res }func dfs(n int, lc int, rc int, path string) {if lc n && rc n {res append(res, path)return }…

一键下载 M3U8 并转换为 MP4升级版

之前的下载 M3U8程序,有很多问题, 为此做了一些升级,分享给大家。 增加了存在播放列表的情况处理播放列表路径和ts路径错误问题多线程问题对于电视剧多文件下载的处理 这里从网上找了一部的链接,可以参考这个网站https://www.zu…

YOLOV5训练KITTI数据集实践

目录 一、YOLOV5下载安装二、KITTI数据集三、标签格式转换四、修改配置文件五、训练六、测试 一、YOLOV5下载安装 git clone https://github.com/ultralytics/yolov5.git conda create -n yolov5 python3.8 -y conda activate yolov5 cd yolov5 pip install -r requirements.t…

百度OCR身份证识别C++离线SDKV3.0 C#对接

百度OCR身份证识别C离线SDKV3.0 C#对接 目录 说明 效果 问题 项目 代码 下载 说明 自己根据SDK封装了动态库,然后C#调用。 SDK 简介 本 SDK 适应于于 Windows 平台下的⾝份证识别系统,⽀持 C接⼜开发的 SDK,开发者可在VS2015 下⾯进⾏开发(推荐…

基于FPGA的HDMI设计导航页面

FPGA使用HDMI更多时候用于传输图像数据,并不会传输音频数据,因此以下文章均采用DVI接口协议,HDMI与DVI的视频传输协议基本一致,区别也很小。 首先需要了解HDMI的来源,以及物理接口类型以及引脚信号,最后对几…

网站SEO关键词规划时如何筛选出合适的关键词?

在网站SEO优化过程中,关键词布局是一个至关重要的环节。首先,我们需要确定核心关键词,然后通过各种策略和方法对关键词进行扩展。完成关键词扩展后,接下来的任务就是对这些扩展后的关键词进行筛选。那么,如何进行有效的…

day02 51单片机

51单片机学习 1闪烁LED 1.1 需求描述 这个案例,我们要让P00引脚对应的LED按照1秒闪烁1次。 1.2 硬件设计 1.1 软件设计 1)LED闪烁的代码 想让LED闪烁,就需要P00的值不断在0和1之间循环变化。实现这一功能的代码也很简单: #include <STC89C5xRC.H> //包含STC89…

在线预约小程序怎么做

在快节奏的现代生活中&#xff0c;无论是预约理发、还是预定餐厅&#xff0c;亦或是挂号就医&#xff0c;我们都希望有一个更加便捷、高效的方式来完成这些任务。而今&#xff0c;随着科技的发展&#xff0c;一款全新的在线预约小程序应运而生&#xff0c;为我们的生活带来了前…

SOCKS代理是如何增强网络隐私?

在数字化时代&#x1f310;&#xff0c;网络隐私的重要性日益凸显。个人和组织都在寻找有效的方法来保护自己的网络活动不受侵犯。SOCKS代理作为一种流行的网络协议&#xff0c;提供了一种有效的手段来增强网络隐私。本文将详细介绍SOCKS代理是如何工作的&#xff0c;以及它是如…

【随笔】Git 高级篇 -- 本地栈式提交 rebase | cherry-pick(十七)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

不允许在constexpr函数中进行声明

这是我用pycharm在windows系统下复现sfm深度学习网络(Deep Two-View Structure-from-Motion Revisited&#xff09;遇见的问题&#xff0c;复现时有段代码pytorch扩展cuda/c&#xff0c;pycharm中出现C标准相关的报错如下&#xff1a; 在网上查找很久无果&#xff0c;后面通过…

局域网tcp通信实验

两台windows系统计算机简单TCP通信测试_两台计算机tcp通信-CSDN博客 使用这篇文章的小工具。 环境&#xff1a; 我和同学的两台笔记本电脑。 使用我的手机开热点&#xff0c;两台电脑连接热点。 我的&#xff1a; IPv4 地址 . . . . . . . . . . . . : 192.168.92.79 子…

码农必看:常见源代码混淆技术详解

背景 一、项目组代码部署存在的问题 在项目组中&#xff0c;核心代码模块被部署于用户服务器上。然而&#xff0c;另一家公司获取了该服务器的root密码&#xff0c;这就存在着潜在的数据泄露和代码泄露的风险。传统的解决方法是通过配置环境变量来进行数据库加密处理&#xf…

全国项目管理标准化技术委员会副秘书长肖杨先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 全国项目管理标准化技术委员会副秘书长、微薄之力&#xff08;北京&#xff09;管理咨询有限公司董事长肖杨先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“数字化时代下&#xff0c;由职能型组织向高度适应性组织转…

免费的GPT-3.5 API服务aurora

什么是 aurora &#xff1f; aurora 是利用免登录 ChatGPT Web 提供的无限制免费 GPT-3.5-Turbo API 的服务&#xff0c;支持使用 3.5 的 access 调用。 【注意】&#xff1a;仅 IP 属地支持免登录使用 ChatGPT的才可以使用&#xff08;也可以自定义 Baseurl 来绕过限制&#x…

03-JAVA设计模式-装饰模式

装饰模式 什么装饰模式 装饰器模式&#xff08;Decorator Pattern&#xff09;也叫包装器模式&#xff0c;是一种结构型设计模式&#xff0c;允许用户在不改变对象的情况下&#xff0c;动态地给对象增加一些额外的职责&#xff08;功能&#xff09;。装饰器模式相比生成子类更…

【重磅福利】智慧餐饮互联网餐饮行业分析数字化报告大合集共40份(免费下载)

【1】关注本公众号 【2】私信发送 智慧餐饮报告合集 【3】获取本方案合集的下载链接&#xff0c;直接下载即可。

前端学习<四>JavaScript基础——15-内置对象 String:字符串的常见方法

内置对象简介 JavaScript 中的对象分为3种&#xff1a;自定义对象、内置对象、浏览器对象。 前面两种对象&#xff1a;是JS的基础内容&#xff0c;属于 ECMAScript&#xff1b; 第三个浏览器对象&#xff1a;属于JS独有&#xff0c;即 JS 内置的API。 内置对象&#xff1a;就是…