前端学习<四>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,一经查实,立即删除!

相关文章

十大经典排序算法及其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,联…

Kibana管理ES生命周期

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

uni-starter和uni-admin初始化

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

pygame旋转角度发射射线

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

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

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

echarts 多环形图

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

美国N4433A安捷伦电子校准件

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

基于FPGA的HDMI设计导航页面

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

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

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

力扣404,左叶子之和

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

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

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

透视 Insilico 英矽智能:AI 制药明星企业的飞跃、困境与破局

衰老,从古至今困扰了无数仁人志士。无论是千古一帝秦始皇,还是雄才大略汉武帝,亦或者挥斥方遒唐太宗,这些伟大的帝王无一例外的都留下了许多追求长生的故事。当时光的指针落在了 21 世纪的第二个十年,随着全球老龄化问…

【c++】string类常见接口函数

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好啊,本节我们来到STL内容的第一部分:string类接口函数的介绍 目录 1.string类的认识2.常见接口讲解2.1 string类对象的常见构造2.2 对string对象的遍历和…

Jackson解析Json数据

1.概述 Jackson 和 FastJson 一样,是一个 Java 语言编写的,可以进行 JSON 处理的开源工具库,Jackson 的使用非常广泛,Spring 框架默认使用 Jackson 进行 JSON 处理。 Jackson 有三个核包,分别是 Streaming、Databid、…

【实战JVM】类的生命周期

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

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

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

推荐学习什么编程语言?

选择编程语言学习时,除了就业因素外,还可以考虑以下几个方面来决定学习哪些编程语言: 个人兴趣与目标:如果你对某个特定领域感兴趣,比如游戏开发、数据分析、人工智能等,可以选择与该领域紧密相关的编程语言…