《JavaScript高级程序设计》__ 基本引用类型(上)

简介: 前言大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案。

前言

大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案。

工作这么多年,到现在为止对这本书都没有一个系统的知识点记录,这次想从头读一遍这一本JavaScript高级程序设计【第4版】,并把重要的知识点记录下来,同时加上自己的见解,这也是我第一次在掘金上记录分享读书笔记,共勉之!

关注专栏,一起学习吧~

Boolean

let booleanObj = new Boolean(true)
console.log(booleanObj) // Boolean {true}
复制代码

boolean实例的valueOf返回一个原始值:true或false,toString方法被调用也会覆盖,返回一个字符串原始值:'true'或'false'。

强烈建议永远不要使用new Boolean

let falseBoolean = new Boolean(true)
let trueBoolean = true
console.log(typeof falseBoolean) // object
console.log(typeof trueBoolean) // boolean
复制代码

Number

let numberObj = new Number(10)
复制代码

与Boolean一样,Number也重写了valueOftoString方法。

Number实例的valueOf返回一个原始值:10,toString方法被调用也会覆盖,返回一个字符串原始值:'1'。

toString方法可以接受接受一个参数进制

let num = new Number(10)
console.log(num.toString(2)) // '1010'
复制代码

isInteger

isInteger可以辨别一个数值是否为整数:

let intNum = 10
let floatNum1 = 10.1
let floatNum2 = 10.0
console.log(Number.isInteger(intNum)) // true
console.log(Number.isInteger(floatNum1)) // false
console.log(Number.isInteger(floatNum2)) // true
复制代码

toFixed

接受一个参数n,保留n位小数:

let num = 3.1415926
console.log(num.toFixed(3)) // 3.142
复制代码

toExponential & toPrecision

科学计数法(指数计数法)

String

const stringObj = new String('hello HoMeTown')
复制代码

String的valueOftoString都返回原始值。

每个String实例上都有一个length属性。

console.log(stringObj.length) // 14
复制代码

JavaScript字符

JavaScript字符串由16位码元(code unit)组成,每16位码元对应一个字符,字符串的length标识字符串包含多少位16位码元。

concat

返回拼接后的结果

let str = "home"
let res = str.concat('town')
console.log(res) // hometown
console.log(str) // home
复制代码

字符串提取的方法

都返回调用他们的字符串的一个子字符串,都接受1~2个参数。

第一个参数表示:子字符串开始的位置。

第二个参数见详细介绍。

省略第二个参数都意味着提取到字符串末尾。

不会修改调用它们的字符串,只会返回新的字符串。

slice

第二个参数是提取结束的位置。

let str = 'hometown'
console.log(str.slice(4)) // 'town'
console.log(str.substr(4)) // 'town'
console.log(str.substring(4)) // 'town'
console.log(str.slice(1, 4)) // 'ome'
console.log(str.substr(1, 4)) // 'omet'
console.log(str.substring(1, 4)) // 'ome'
复制代码

substr

第二个参数表示返回的子字符串的数量

substring

第二个参数是提取结束的位置。

indexOf

let str = "hometown"
console.log(str.indexOf('h')) // 0
复制代码

includes

let str = "hometown"
console.log(str.includes('h')) // true
复制代码

startsWith

是否以某个字符开头:

let str = "hometown"
console.log(str.startsWith('h')) // true
复制代码

endsWith

是否已某个字符结束:

let str = "hometown"
console.log(str.endsWith('h')) // false
复制代码

trim

删除前后所有空格,返回结果:

let str = '    hello hometown   '
console.log(str.trim()) // hello hometown
复制代码

trimLeft()trimRight()就是分别从开始和末尾清除空格。

repeat

接受一个整数参数,表示要将字符串重复多少次,返回拼接后的结果:

let str = 'hello '
console.log(str.repeat(10) + 'hometown') // hello hello hello hello hello hello hello hello hello hello hometown
复制代码

padStart & padEnd

接收两个参数,第一个是指定字符串最后的长度,第二个是填充字符(默认为空格)。

let str = "hometown"; 
console.log(str.padStart(16, "a")); // "aaaaaaaahometown" 
console.log(str.padStart(16)); // "        hometown"
复制代码

迭代与结构

字符串结构的原理: Symbol(Symbol.iterator)

let str = 'hmt'
let strIterator = str[Symbol.iterator]()
console.log(strIterator.next()) // {value: 'h', done: false}
console.log(strIterator.next()) // {value: 'm', done: false}
console.log(strIterator.next()) // {value: 't', done: false}
console.log(strIterator.next()) // {value: undefined, done: true}
const message = 'hometown'
console.log([...message]) // ['h', 'o', 'm', 'e', 't', 'o', 'w', 'n']
复制代码

字符串大小写转换

toLowerCase

toLocaleLowerCase

toUpperCase

toLocaleUpperCase

Locale是指在特定区域用的,比如土耳其语。

let str = 'HoMeTown'
console.log(str.toLowerCase()) // hometown
console.log(str.toLocaleLowerCase()) // hometown
console.log(str.toUpperCase()) // HOMETOWN
console.log(str.toLocaleUpperCase()) // HOMETOWN
复制代码

如果不知道是什么语言,建议使用xxxLocalexxx()

match

接受一个参数:正则:

let str = "cat, bat, sat, fat";
let pattern = /.at/
let matches = str.match(pattern)
console.log(matches) // ['cat', index: 0, ...] 
复制代码

charAt

返回给定索引位置的字符,更具体一点查找的是索引位置的16位码元,并返回码元对应的字符:

let str = 'hometown'
console.log(str.charAt(3)) // e
复制代码

JavaScript字符串使用了两种 Unicode编码混合的策略:UCS-2 和 UTF-16。

charCodeAt

返回指定索引位置的码元值的10进制表示:

let str = 'hometown'
console.log(str.charCodeAt(3)) // 101 === 0x65
复制代码

formCharCode

接收UTF-16码元,返回对应的字符串,并拼接起来:

console.log(String.fromCharCode(0x65, 0x66, 0x67)) //efg
复制代码


目录
相关文章
|
13天前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
30 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
6月前
|
存储 JavaScript
JS中原始类型与引用类型
JS中原始类型与引用类型
|
11月前
|
JavaScript 前端开发 Java
|
11月前
|
存储 JavaScript 前端开发
|
人工智能 JavaScript 前端开发
JavaScript高级程序设计继承(二)
有时候可能需要定义这样一个类,它可供其他类继承,但本身不会被实例化。虽然 ECMAScript 没 有专门支持这种类的语法 ,但通过 new.target 也很容易实现。new.target 保存通过 new 关键字调 用的类或函数。通过在实例化时检测 new.target 是不是抽象基类,可以阻止对抽象基类的实例化:
145 0
|
前端开发 JavaScript 索引
前端祖传三件套JavaScript的对象之常用引用类型的RegExp
正则表达式是一种强大的文本处理工具,可以在前端开发中实现许多高效、灵活的文本操作。JavaScript 中的 RegExp 对象给我们提供了一个简单而强大的方式来匹配和搜索字符串。在本文中,我们将深入探讨 JavaScript 正则表达式对象,并介绍其中一些常用的引用类型。
88 0
|
前端开发 JavaScript
前端祖传三件套JavaScript的对象之常用引用类型的Date
在前端开发中,日期和时间处理是不可避免的任务之一,JavaScript 中的 Date 对象提供了一组强大的方法和属性,可以帮助我们更轻松地操作和管理日期和时间。在本文中,我们将深入探讨 JavaScript 日期对象,并介绍其中一些常用的引用类型。
112 0
|
JavaScript 前端开发
《JavaScript面向对象精要》——1.6 鉴别引用类型
对其他引用类型的鉴别则较为棘手,因为对于所有非函数的引用类型,typeof返回“object”。在处理很多不同类型的时候这帮不上什么忙。为了更方便地鉴别引用类型,可以使用JavaScript的instanceof操作符。
1295 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
85 2
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
106 4