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

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

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

1、基本数据类型:

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

 var str = 'qianguyihao';​str.aaa = 12;console.log(typeof str); //打印结果为:stringconsole.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); //打印结果:Objectconsole.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); // 打印结果:stringconsole.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):把临时变量的值 赋值给 strstr = 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.mzph.cn/news/807172.shtml

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

相关文章

从零开始的LeetCode刷题日记:28. 实现 strStr()

一.相关链接 题目链接:28. 实现 strStr() 二.心得体会 1)KMP算法的思想 需要在一个字符串里找另一个字符串就需要用到KMP算法。KMP算法的重点是求出next数组,然后每次遇到不匹配的情况就根据数组来回退并重新匹配。 KMP算法的思想是最长…

十大经典排序算法及其C语言实现--带动图展示

排序算法大概算起来有以下十种 一、冒泡排序(Bubble Sort) 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数…

python统计分析——一般线性回归模型

参考资料:python统计分析【托马斯】 当我想用一个或多个其他的变量预测一个变量的时候,我们可以用线性回归的方法。 例如,当我们寻找给定数据集的最佳拟合线的时候,我们是在寻找让下式的残差平方和最小的参数(k,d): 其…

基于51单片机的秒表设计—0.01精度99.99s

基于51单片机的秒表设计 (仿真+程序+原理图+PCB+设计报告) 功能介绍 具体功能: 1.数码管显示秒表,精度为0.01; 2.记时最大为99.99s,过后清零记数。 3.一个按键实现开始…

突破传统,创新营销:淘宝天猫详情接口API的无限可能

随着互联网的迅猛发展,电子商务平台成为了现代商业营销的重要组成部分。淘宝和天猫作为中国最大的电子商务平台之一,拥有庞大的商品数据库和海量的买家资源。为了更好地实现个性化、精准化的营销策略,淘宝天猫推出了详情接口API,联…

【代码随想录】day41

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、343整数拆分二、96不同的二叉搜索树 一、343整数拆分 class Solution { public:int integerBreak(int n) {vector<int> dp(n 1, 1);for (int i 2; i &…

Kibana管理ES生命周期

希望通过Kibana界面管理ES索引的生命周期 版本&#xff1a;7.15.2 创建索引模板 创建索引模板方便匹配索引&#xff0c;对匹配到的一批索引采用同一套生命周期管理策略&#xff0c;例如开发环境的所有索引以dev-开头&#xff0c;可以创建样式为dev-*的索引模板以匹配开发环境…

【Python】——三种常用数据类型

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:数据结构_IT闫的博客-CSDN博客 🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客 💎C++:

uni-starter和uni-admin初始化

1. 初始化uni-starter项目之后需要在uniCloud–>cloudfunctions–>common–>uni-config-center下面新增uni-id文件夹&#xff0c;下面新增config.json文件。 1.1配置好tokenSecret和微信的appId&#xff0c;appSecret等,如下&#xff1a; {"passwordSecret"…

AI教你学IT(不要再学JAVA了,都要被卷烂了)

目录 方向一&#xff1a;学习路径 1. 在线课程与自学&#xff1a; 2. 培训机构与课程&#xff1a; 3. 学历教育与进修&#xff1a; 方向二&#xff1a;技能培养 1. 编程能力&#xff1a; 2. 数据处理与分析&#xff1a; 3. 软件开发与测试&#xff1a; 方向三&#xff…

pygame旋转角度发射射线

self.x self.x math.cos(math.radians(self.xuanzhuanjiao)) * 70 self.y self.y - math.sin(math.radians(self.xuanzhuanjiao)) * 70 旋转角度&#xff0c;70是间隔 间隔太小会卡 import pygame from pygame.locals import * import sys import mathpygame.init()width, …

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

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

echarts 多环形图

环形图效果&#xff1a; option {"angleAxis": {"max": 1,"show": false,"splitLine": {"show": false},"axisLabel": {"show": false},"axisTick": {"show": false}},"ra…

美国N4433A安捷伦电子校准件

181/2461/8938产品概述&#xff1a; 安捷伦N4433A微波电子校准&#xff08;ECal&#xff09;模块使矢量网络分析仪的校准变得快速、简单和准确。ECal是一种用于矢量网络分析仪的精密单连接校准技术。与机械校准套件相比&#xff0c;使用ECal进行完整的三端口或四端口校准所需的…

基于FPGA的HDMI设计导航页面

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

风电用主齿轮箱市场的发展趋势和竞争格局

环洋市场咨询Global Info Research的风电用主齿轮箱市场调研报告提供风电用主齿轮箱市场的基本概况&#xff0c;包括定义&#xff0c;分类&#xff0c;应用和产业链结构&#xff0c;同时还讨论发展政策和计划以及制造流程和成本结构&#xff0c;分析风电用主齿轮箱市场的发展现…

【Java】Java使用Swing实现一个模拟计算器(有源码)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 今天翻了翻之前写的代码&#xff0c;发现自己之前还写了一个计算器&#xff0c;今天把我之前写的代码分享出来。 我记得那会儿刚学不会写&#xff0c;写的乱七八糟&#xff0c;但拿来当期末作业还是不错的哈哈。 直接上…

常用MySql下载安装使用教程

MySQL是一个流行的开源关系型数据库管理系统&#xff0c;被广泛应用于网站建设、软件开发等多个领域。它以其高性能、高可靠性和易用性&#xff0c;赢得了开发者的青睐。下面我将详细介绍MySQL的下载安装流程&#xff0c;并介绍一些常用的数据库操作命令。 一、MySQL的下载与安…

力扣404,左叶子之和

404. 左叶子之和 已解答 简单 相关标签 相关企业 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;…

C:数据结构之链栈(不带头)

目录 前序 准备工作 函数声明 函数接口 1.初始化 2.创造节点 3. 判断栈空 4.入栈 5.出栈 6.取栈顶元素 7.销毁栈 8. 获取栈的元素个数 总结 前序 链栈是基于单链表实现的,其实栈更加适合使用顺序表来实现的,这篇文章我们来探讨一下链栈的实现。 准备工作 老规…