JS直接量及其相关对象
什么是直接量
直接量是指不需要创建对象就可以直接使用的变量。ES中的直接量主要有三种类型:表示字符串的string类型、表示数字的number类型和表示true/false的boolean类型。当我们直接将值赋给变量后,ES就会自动判断其类型,而且当参数发生变化后,其类型也会自动跟着变化,即ES时一种弱类型的语言。
直接量直接使用两块内存来保存它们的名值对,而不像对象类型需要3块内存。
直接量的封包与解包
ES中有一种叫做自动封包/解包的功能, 类似.net/java
中的装箱/拆箱,其作用时在程序执行过程中按照需要自动在直接量和其对象的对象类型间进行转化。将直接量转换为对应的对象进行处理叫封包,反过来,将对象转换为直接量叫解包。
代码示例:
var m = new Number(5);
var n = m + 2;console.log(n); // 7
console.log(typeof m); // object
console.log(typeof n); // number
直接量的包装对象
直接量所对应的对象叫做包装对象,string、number、boolean所对应的包装对象分别是String、Number、Boolean对象。它们都是function类型的对象。
一个对象最重要的就是它所包含的属性,而function对象的属性又分为两大类,一类是它自身的属性,另一类是它所创建的object类型实例对象的属性,创建的实例对象的属性又分为实例自己的属性和function的prototype的属性。
String对象
String对象是function类型的对象,对应的是字符串类型,可用来创建字符串类型的object类型,例如: new String(‘abc’);
String自身的属性
String类型自身只有两个属性,一个prototype,另一个是fromCharCode。fromCharCode方法的作用是创建由Unicode值所对应的字符组成的字符串,需要一个或多个参数。
代码示例:
var s = String.fromCharCode(97,98,99);
console.log(s); // abc
String.prototype中的属性
- constructor: 默认指向Stirng对象本身
- toString: 重写了toString方法,所以字符串的toString不会返回[object, Obejct]
或者[object, String]而是返回字符串本身的值。
代码示例:
var s = new String('Hello World');
console.log(s.toString()); // Hello World
- valueOf: 返回字符串本身
代码示例:
var s = new String('Hello World');
console.log(s.valueOf()); // Hello World
- charAt: 这个方法用来获取指定位置的字符,序号从0开始
代码示例:
var s = new String('Hello World');
console.log(s.charAt(3)); // l
- charCodeAt: 这个方法和charAt类似,但它获取的是Unicode值。
代码示例:
var s = new String('aHello World');
console.log(s.charCodeAt(0)); // 97
- concat: 这个方法可以将多个字符串连接在一起组成一个新字符串。此时s并不会有变化。
代码示例:
var s = 'hello';
var s1 = s.concat(' world');
console.log(s1); // hello world
- indexOf: 这个方法用来查找指定的字符或者字符串,它有两个参数,第一个参数是要查找的字符或字符串;第二个参数可选,代表查找的起始位置,如果省略,默认从第一个字符开始查找
代码示例:
var s = 'hello world';console.log(s.indexOf('l')); // 2
console.log(s.indexOf('or')); // 7
- lastIndexOf: 这个方法与indexOf的用法一样,不同之处在于: indexOf是从前往后找,而lastIndexOf是从后往前找,并且lastIndexOf的第二个参数position的作用是指定查找的字符串的结束位置(从0开始计数)
代码示例:
var s = 'hello world';console.log(s.lastIndexOf('l')); // 9, 注意:这里是9, 下面的是3
console.log(s.lastIndexOf('l', 3)); // 3
- localeCompare: 这个方法的作用是使用本地化方式比较字符串,类似于>、<的作用,但是>、<只能依据Unicode编码来比较字符串的大小,而有些地区的字符顺序和Unicode编码并不一样,这是就需要使用localeCampare方法来比较。
代码示例:
console.log('a'.localeCompare('b')); // -1
console.log('b'.localeCompare('a')); // 1
console.log('a'.localeCompare('a')); // 0
- match: 这个方法用于匹配指定的内容,如果传入的参数为字符串,则会匹配字符串,如果传入的是正则表达式,则会返回于正则表达式相匹配的内容:
代码示例:
console.log('hello javaScript'.match('Script')); // ["Script"]
console.log('hello'.match('Script')); // null
console.log('hello javaScript'.match(/script/i)); // ["Script"]
console.log('hello javaScript'.match(/a+/g)); // ['a','a']
- replace: 这个方法用来将字符串中指定的内容替换为新内容,要替换的内容可以是字符串也可以是正则表达式。默认只会替换第一个符合条件的内容,使用正则表达式可以使用g来替换全部符合条件的内容。replace不会改变原来对象的值,而是返回新的对象。
代码示例:
var a = 'beneficial';console.log(a.replace('e', 'E')); // bEneficial
console.log(a.replace(/e/, 'E')); // bEneficial
console.log(a.replace(/e/g, 'E')); // bEnEficial
- slice: 这个方法用于截取字符串的一部分,它有两个参数,分别表示要截取的字符串的起始位置和结束位置,如果大于0, 则从前面技术,如果小于0,则从后面计数,如果省略第二个参数,则会截取到字符串的末尾。slice也不会改变原来的字符串。
代码示例:
var s = 'hello ECMAScritpt';
console.log(s.slice(6, 10)); // ECMA
console.log(s.slice(6, -7)); // ECMA
console.log(s.slice(6)); // ECMAScritpt
- substring: 这个方法和slice类似,也是截取字符串中的一部分,它有两个参数,分别表示要截取的字符串的起始位置和结束位置,所不同的是substring中结束位置在起始位置之前,则会自动将其调换后再截取,当参数小于0时会按0处理。substr方法虽然在主流浏览器中可以使用,但并不是标准里的方法,随时可能被舍弃,不建议使用。
代码示例:
var s = 'hello ECMAScritpt';
console.log(s.substring(6, 10)); // ECMA
console.log(s.substring(10, 6)); // ECMA
console.log(s.substring(6)); // ECMAScritpt
console.log(s.substring(-5)); // hello ECMAScritpt
- split: 这个方法用于按照指定分隔符将字符串转换为字符串数组。split方法有两个参数,第一个参数时分隔符,如果不为空则使用它来分割字符串,如果为空则按照字符分割字符串;第二个参数可选,表示需要返回数组中元素的个数,如果省略则将分割后的元素全部返回。
代码示例:
var s = 'hello world';
console.log(s.split(" ")); // [ 'hello', 'world' ]
console.log(s.split(" ", 1)); // [ 'hello' ]
console.log(s.split()); // [ 'hello world' ]
- toLowerCase: 这个方法的作用是将字符串转换为小写形式
代码示例:
var s = 'Hello World';
console.log(s.toLowerCase()); // hello world
- toLocaleLowerCase: 使用本地语言将字符串转换为小写
代码示例:
var s = 'Hello World';
console.log(s.toLocaleLowerCase()); // hello world
-
toUpperCase/toLocaleUpperCase: 同转换小写的方式,将字符串转换成大写。
-
trim: 去掉字符串头部和尾部的空格:
代码示例:
var s = ' Hello World ';
console.log(s.trim()); // Hello World
String创建的对象实例的属性
- length属性和类似于数组,属性名为0到length-1,属性值为序号所对应的字符:
代码示例:
var s = new String('Hello World');
console.log(s.length); // 11
console.log(s[0]); // H
Number对象
Number对象是function类型的对象,对应的是数字类型,可用来创建数字类型的object对象。
Number自身的属性
- prototype:原型对象
- MAX_VALUE: 用来表示最大的数,其值约为1.7976931348623175*10^308
- MIN_VALUE: 用来表示最小数, 约为5*10^-324
- NaN: Not a Number缩写
- NEGATIVE_INFINITY:表示负无穷大
- POSITIVE_INFINITY: 表示正无穷大
Number.prototype属性
- constructor: 这个属性默认指向Number对象本身
- toString: Number的prototype重写了toString方法,重写后的toString方法会返回数字的字符串形式,还可以指定要转换为数字的基数,即指定几进制,默认十进制。
代码示例:
var n = 11;
console.log(n.toString()); // 11
console.log(n.toString(2)); // 1011
console.log((255).toString(16)); //ff
- toLocaleString: 这个方法会按照数字的本地表示法来输出
代码示例:
var n = 5201314;
console.log(n.toLocaleString()); // 5,201,314
console.log(n.toLocaleString('zh-Hans-CN-u-nu-hanidec')); // 五,二〇一,三一四
- valueOf: 返回数字的直接量
代码示例:
var n = new Number(520);
console.log(typeof n); // object
console.log(typeof n.valueOf()); // number
- toFixed: 这个方法用来指定数字的精度,即保留几位小数。它的参数为要保留小数的位数,如果不指定则按0处理,即没有小数,并且它会按需要自动进行四舍五入。
代码示例:
console.log(123.456.toFixed()); // 123
console.log(123.456.toFixed(2)); // 123.46
console.log(123.456.toFixed(5)); // 123.45600
console.log(13.14e5.toFixed(6)); // 1314000.00000
- toExponential: 此方法的作用是将数字转换为科学计数法来表示,有一个可选参数,表示保留小数的位数,如果省略参数,则将输出尽可能多的数字。
代码示例:
console.log(123.456.toExponential()); // 1.23456e+2
console.log(123.456.toExponential(2)); // 1.23e+2
- toPrecision: 这个方法用于将数字格式话为指定位数(包括整数和小数)。如果指定的位数小于数字的整数部分,那么将使用科学计数法来表示。
代码示例:
console.log(123.456.toPrecision(4)); // 123.5
console.log(123.456.toPrecision(2)); // 1.2e+2
Number创建的示例对象的属性
Number创建的实例对象没有自己的命名属性。
Boolean对象
Boolean对象是function类型的对象,对应的是布尔类型,可用来创建布尔类型的object实例对象。
Boolean自身的属性
只有一个prototype属性
Boolean.prototype的属性
Boolean的prototype一共有三个属性: constructor、toString和valueOf。constructor指向Boolean本身,toString和valueOf都返回实例对象的值,但它们类型不一样,toString返回的string类型,而valueOf返回boolean类型。
代码示例:
var b = new Boolean(true);console.log(b.toString()); // 'true'
console.log(b.valueOf()); // trueconsole.log(typeof b); // object
console.log(typeof b.toString()); // stirng
console.log(typeof b.valueOf()); // boolean
多知道点: 如何在浏览器中产看对象的属性
代码示例:
// 获取String对象自身的属性
console.log(Object.getOwnPropertyNames(String));
// ["length", "name", "prototype", "fromCharCode", "fromCodePoint", "raw"]// 获取String的prototype的属性
console.log(Object.getOwnPropertyNames(String.prototype));
// ["length", "constructor", "anchor", "big", "blink", "bold", "charAt", "charCodeAt",
// "codePointAt", "concat", "endsWith", "fontcolor", "fontsize", "fixed", "includes",
// "indexOf", "italics", "lastIndexOf", "link", "localeCompare", "match", "matchAll",
// "normalize", "padEnd", "padStart", "repeat", "replace", "search", "slice", "small",
// "split", "strike", "sub", "substr", "substring", "sup", "startsWith", "toString",
// "trim", "trimStart", "trimLeft", "trimEnd", "trimRight", "toLocaleLowerCase",
// "toLocaleUpperCase", "toLowerCase", "toUpperCase", "valueOf"]// 获取String创建的对象实例的属性
console.log(Object.getOwnPropertyNames(new String()));
// ["length"]
相关文章:

JS直接量及其相关对象
什么是直接量 直接量是指不需要创建对象就可以直接使用的变量。ES中的直接量主要有三种类型:表示字符串的string类型、表示数字的number类型和表示true/false的boolean类型。当我们直接将值赋给变量后,ES就会自动判断其类型,而且当参数发生变…...

一 windso10 笔记本刷linux cent os7.9系统
1:准备材料 16G以上U盘, 笔记本一台 镜像选了阿里云镜像:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 软件:链接:https://pan.baidu.com/s/13WDp2bBU1Pdx4gRDfmBetg 提取码:09s3 2:把镜像写入U盘,本人已经写入好了,选择镜像,点开始就是,确定等…...

118.龙芯2k1000-pmon(17)-制作ramdisk
目前手上这个设备装系统不容易,总是需要借助虚拟机才能实现。 对生产就不太那么友好,能否不用虚拟机就能装Linux系统呢? 主要是文件系统的问题需要解决,平时我们一般是用nfs挂载后,然后对硬盘格式化,之后…...

IP-guard邮件管控再升级,记录屏幕画面,智能阻断泄密邮件
邮件是工作沟通以及文件传输的重要工具,却也成为了信息泄露的常见渠道。员工通过邮件对外发送了什么内容,是否含有敏感信息都无从得知,机密通过邮件渠道外泄也难以制止。想要防止企业的重要信息通过邮件方式泄露,我们不仅需要通过技术措施对外发邮件的行为进行规范,也要对…...
#LLM入门|Prompt#2.10_评估、自动化测试效果(下)——当不存在一个简单的正确答案时 Evaluation Part2
上一章我们探索了如何评估 LLM 模型在 有明确正确答案 的情况下的性能,并且我们学会了编写一个函数来验证 LLM 是否正确地进行了分类列出产品。 在使用LLM生成文本的场景下,评估其回答准确率可以是一个挑战。由于LLM是基于大规模的训练数据进行训练的&am…...

round四舍五入在python2与python3版本间区别
round()方法返回数值的小数点四舍五入到n个数字。 语法 以下是round()方法的语法: round( x ,n) 参数 x --这是一个数值,表示需要格式化的数值 n --这也是一个数值,表示小数点后保留多少位 返回值 该方法返回 数值x 的小数点四舍五入到n个数字 …...
新概念英语第二册(73)
【New words and expressions】生词和短语(9) record-holder 纪录保持者 truant n. 逃学的孩子unimaginative adj. 缺乏想像力的shame n. 惭愧,羞耻 hitchhike v. 搭便车旅行 m…...

Vue项目实战-空间论坛(2)
项目实战 实现userlist页面 获取userlist列表,可使用ajax,axios 实现 这里采用ajax实现,需要添加Jquery依赖,然后在UserListView.vue中引入 在UserListView.vue组件的入口函数中定义users变量,并引入ref 使用ajax从云端动…...
小老虎吃汉堡,认识continue和break
continue;//结束本次循环,执行下面的循环 break; //结束本次及以后的循环,执行循环下面的代码1. /*小老虎在吃汉堡,但是第三个汉堡上被挤了芥末,不能吃,跳过去又吃第四、五个*/ for (int i1;i<5;i){if (i3){contin…...
docker搭建zero-ui
确保你已经安装了Docker和Docker Compose。如果没有,请参照官方文档安装:Docker 和 Docker Compose。 使用 Docker CLI 获取 Zero-UI 镜像: 首先,你需要从Docker Hub获取Zero-UI的Docker镜像。你可以使用 docker pull 命令来下载它。 docker…...

187基于matlab的弹道目标跟踪滤波方法
基于matlab的弹道目标跟踪滤波方法,扩展卡尔曼滤波(extended Kalman filter, EKF)、转换测量卡尔曼滤波(conversion measurement Kalman filter, CMKF)跟踪滤波,得到距离、方位角、俯仰角误差结果。程序已调…...
讲给自己听的的技术---WMS
标题一 点题 为什么我会说,这是说给自己听的了?做项目有三个月了,外加之前三个月的自学,自我感觉对WMS系统有了一点了解,今天三月九号晚上九点二十,就让我自己和自己说说吧。 标题二 WMS的职责是什么…...
在Java中,请详细讲解并发、多线程、异步的区别和联系
在Java中,请详细讲解并发、多线程、异步的区别和联系 并发、多线程、异步是Java编程中与并行处理相关的三个重要概念,它们之间既有区别也有联系。 并发(Concurrency): 并发是指在同一时间段内,多个任务或…...
网络安全及信息安全常识
网络安全及信息安全常识 闻知:西安之地,借软件正版化,诈骗违法犯罪多有。本人自2008年10月,以劳动合同入职软件公司后,知至今日,普通百姓,电脑知识匮乏。因此,当此时,有前…...

(十五)【Jmeter】取样器(Sampler)之HTTP请求
简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…...

YOLOv8.1.0安装
【YOLO】YOLOv8训练环境配置 python 3.8.18 cuda 11.3.1 cudnn 8.2.1 pytorch 1.12.1-gpu版 - 知乎 (zhihu.com) 一、Anaconda 默认装好了可用的Anaconda,安装教程见Win10系统anaconda安装 - 知乎 (zhihu.com) 二、在虚拟环境下用conda安装 1.创建虚拟环境 …...
Linux下使用MD5SUM命令详解
在Linux操作系统中,md5sum是一个非常实用的工具,用于生成和校验文件的MD5散列值。MD5是一种广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值,常用来确保数据的完整性和一致性。 一、MD5SUM命令…...

蓝桥杯python常用内置函数
一、 abs() #返回数字的绝对值 例: 二、 all() #判断给定的可迭代参数中的所有元素是否都为True,若是则返回True,反之返回False 例: 三、 any() #判断给定的可迭代参数是否都为False,全为False则返回False&am…...
设计模式 工厂模式
工厂模式,最重要的是反射。 反射:Class类 java的注释是这样写的: Class没有公共构造函数。相反,Class对象是在类加载时由Java虚拟机自动构造的,并通过调用类加载器中的defineClass方法来实现。...

【C++进阶】哈希的应用 --- 布隆过滤器
👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...