《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
复制代码


目录
相关文章
|
1月前
|
存储 JavaScript 前端开发
js的基础类型和引用类型
【10月更文挑战第29天】理解 JavaScript 中的基础类型和引用类型的区别对于正确地编写代码和理解程序的行为非常重要。在实际开发中,需要根据具体的需求合理地选择和使用不同的数据类型,以避免出现一些意想不到的错误和问题。同时,在处理引用类型数据时,要特别注意对象的引用关系,避免因共享引用而导致的数据不一致等问题。
|
2月前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
118 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
7月前
|
存储 JavaScript
JS中原始类型与引用类型
JS中原始类型与引用类型
|
JavaScript 前端开发 Java
|
存储 JavaScript 前端开发
|
人工智能 JavaScript 前端开发
JavaScript高级程序设计继承(二)
有时候可能需要定义这样一个类,它可供其他类继承,但本身不会被实例化。虽然 ECMAScript 没 有专门支持这种类的语法 ,但通过 new.target 也很容易实现。new.target 保存通过 new 关键字调 用的类或函数。通过在实例化时检测 new.target 是不是抽象基类,可以阻止对抽象基类的实例化:
150 0
|
前端开发 JavaScript 索引
前端祖传三件套JavaScript的对象之常用引用类型的RegExp
正则表达式是一种强大的文本处理工具,可以在前端开发中实现许多高效、灵活的文本操作。JavaScript 中的 RegExp 对象给我们提供了一个简单而强大的方式来匹配和搜索字符串。在本文中,我们将深入探讨 JavaScript 正则表达式对象,并介绍其中一些常用的引用类型。
96 0
|
1月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
31 1
JavaScript中的原型 保姆级文章一文搞懂
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
110 2