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"]

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

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

相关文章

2024 ssh连接linux ,包括连接被拒的解决方案

这里以windows系统 连接 linux&#xff08;centOS&#xff09;为例&#xff1a; 一、如果windows 连接时出现&#xff1a; Permission denied, please try again. 连接被拒绝&#xff0c;做出以下修改&#xff1a; 打开linux - Terminal 输入&#xff1a;cat /etc/ssh/sshd_c…

Canvas笔记05:绘制文本,可视化图表中最常用

hello&#xff0c;我是贝格前端工场&#xff0c;最近在学习canvas&#xff0c;分享一些canvas的一些知识点笔记&#xff0c;本期分享canvas绘制文本的知识&#xff0c;欢迎老铁们一同学习&#xff0c;欢迎关注&#xff0c;如有前端项目可以私信贝格。 Canvas绘制文本是指使用H…

TI IWR6843ISK ROS驱动程序搭建

1、设备准备 1.1 硬件设备 1&#xff09;TI IWR 6843 ISK 1块 2&#xff09;Micro USB 数据线 1条 1.2 系统环境 1&#xff09;VMware Workstation 15 Player 虚拟机 2&#xff09;Ubuntu18.04 并安装有 ROS1 系统 如若没有安装 ROS 系统&#xff0c;可通过如下指令进行…

解决方案TypeError: string indices must be integers

文章目录 一、现象&#xff1a;二、解决方案 一、现象&#xff1a; PyTorch深度学习框架&#xff0c;运行bert-mini&#xff0c;本地环境是torch1.4-gpu&#xff0c;发现报错显示&#xff1a;TypeError: string indices must be integers 后面报字符问题&#xff0c;百度过找…

ButterKnife实现之Android注解处理器使用教程

ButterKnife实现之Android注解处理器使用教程 1、新建一个注解 1.1、编译时注解 创建注解所需的元注解Retention包含3个不同的值&#xff0c;RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME。这3个值代表注解不同的保留策略。 使用RetentionPolic…

flink重温笔记(十三): flink 高级特性和新特性(2)——ProcessFunction API 和 双流 join

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 13 天啦&#xff01;学习了 flink 高级特性和新特性之ProcessFunction API 和 双流 join&#xff0c;主要是解决大数据领域数据从数据增量聚合的问题&#xff0c;以及快速变化中的流数据拉宽问题&#xff0c;即变化中多个…

idea连接远程服务器

1. 双击shift&#xff0c;出现如下界面 2. 远程连接 原文来自这个up主的&#xff0c;点击蓝色字体就可以跳转啦&#xff01; 输入主机ip、用户名、密码&#xff0c;点击Test Connection验证&#xff0c;最后点击ok添加成功 有用的话记得给俺点个赞&#xff0c;靴靴~

出现身份验证错误,无法连接到本地安全机构 顺利解决这个问题希望能帮助大家

出现身份验证错误&#xff0c;无法连接到本地安全机构&#xff0c;远程计算机&#xff1a;XX&#xff0c;这可能是由于密码过期&#xff0c;如果密码已过期请更新密码。 我们可以在系统属性中对远程进行设置&#xff0c;以解决远程桌面无法连接到本地安全机构这一问题。 步骤…

AndroidStudio跑马灯实现

在activity_main.xml中编写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_h…

如何配置IDEA中的JavaWeb环境(2023最新版)

创建项目 中文版&#xff1a;【文件】-【新建】-【项目】 点击【新建项目】&#xff0c;改好【名称】点击【创建】 右键自己建立的项目-【添加框架支持】&#xff08;英文版是Add Framework Support...&#xff09; 勾选【Web应用程序】-【确定】 配置tomcat 点击编辑配置 点…

保姆级讲解字符串函数(上篇)

目录 字符分类函数 导图 函数介绍 1.getchar 2. isupper 和 islower 字符转换函数&#xff1a;&#xff08;toupper , tolower&#xff09; 与 putchar 字符串函数 导图 string函数的使用和模拟实现 string的使用 求字符串长度 字符串的比较 string函数的模拟实现…

基于PSO粒子群算法的三角形采集堆轨道优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 假设一个收集轨道&#xff0c;上面有5个采集堆&#xff0c;这5个采集堆分别被看作一个4*20的矩阵&#xff08;下面只有4*10&#xff09;&#xff0c;每个模块&…

Java多线程学习的关键要点和常见案例总结

文章目录 Java多线程学习的关键要点&#xff1a;案例示例&#xff1a; Java多线程编程还包括更多的高级特性和实用技巧高级主题&#xff1a;实用案例&#xff1a;线程池的高级用法和配置&#xff1a;线程安全的最佳实践&#xff1a; Java多线程学习的关键要点和常见案例总结如下…

防患未然,OceanBase巡检工具应用实践——《OceanBase诊断系列》之五

1. OceanBase为什么要做巡检功能 尽管OceanBase拥有很好的MySQL兼容性&#xff0c;但在长期的生产环境中&#xff0c;部署不符合标准规范、硬件支持异常&#xff0c;或配置项错误等问题&#xff0c;这些短期不会出现的问题&#xff0c;仍会对数据库集群构成潜在的巨大风险。为…

血泪教训双非计算机考研避坑指南

记住&#xff0c;考研不是要考多少分&#xff0c;而是要上岸&#xff0c;上岸&#xff0c;上岸&#xff01;&#xff01;&#x1f621; 一、坏、渣、难、险&#xff0c;一律打咩 坏: 歧视本科院校‼️ 这个就不用多说了&#xff0c;你明明付出了大于等于别人的努力&#xff0c;…

猫头虎分享已解决Bug || 数据中心断电:PowerLoss, DataCenterBlackout

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

运维打工人,兼职跑外卖的第二个周末

北京&#xff0c;晴&#xff0c;西南风1级。 前序 今天天气还行&#xff0c;赶紧起来&#xff0c;把衣服都洗洗&#xff0c;准备准备&#xff0c;去田老师吃饭早饭了。 一个甜饼、一个茶叶蛋、3元自助粥花费7.5。5个5挺吉利的。 跑外卖的意义 两个字减肥&#xff0c;记录刚入…

JavaWeb03-HTTP协议,Tomcat,Servlet

目录 一、HTTP协议 1.概述 2.特点 3.请求数据格式 &#xff08;1&#xff09;请求行 &#xff08;2&#xff09;请求头 &#xff08;3&#xff09;请求体 &#xff08;4&#xff09;常见请求头 &#xff08;5&#xff09;GET和POST请求区别 4.响应数据格式 &#xf…

分销商城微信小程序:用户粘性增强,促进复购率提升

在数字化浪潮的推动下&#xff0c;微信小程序作为一种轻便、高效的移动应用形式&#xff0c;正成为越来越多企业开展电商业务的重要平台。而分销商城微信小程序的出现&#xff0c;更是为企业带来了前所未有的机遇。通过分销商城微信小程序&#xff0c;企业不仅能够拓宽销售渠道…

PyQt5实现远程更新exe可执行文件

PyQt5实现远程下载更新exe可执行文件 1、实现流程 1、获取远程http地址 2、获取需要更新的exe文件 3、点击更新 4、把exe强关闭 5、下载文件 6、更新2、效果图 3、示例代码 conf.ini配置文件: {"http_address_edit_value": "http://xxx.com/xxx/xxx.exe&qu…