js的基础内容
Have a good day
1. JavaScript 内置的常用对象有哪些?并列举该对象常用的方法?
Number 数值对象,数值常用方法
- Number.toFixed( ) 采用定点计数法格式化数字
- Number.toString( ) 将—个数字转换成字符串
- Number.valueOf( ) 返回原始数值
String 字符串对象,字符串常用方法
- Length 获取字符串的长度
- split()将一个字符串切割数组
- concat() 连接字符串
- indexOf()返回一个子字符串在原始字符串中的索引值。如果没有找到,则返回固定值 -1
- lastIndexOf() 从后向前检索一个字符串
- slice() 抽取一个子串
Boolean 布尔对象,布尔常用方法
- Boolean.toString() 将布尔值转换成字符串
- Boolean.valueOf() Boolean 对象的原始值的布尔值
Array 数组对象,数组常用方法
- join() 将一个数组转成字符串。返回一个字符串
- reverse() 将数组中各元素颠倒顺序
- delete 运算符只能删除数组元素的值,而所占空间还在,总长度没变(arr.length)
- shift()删除数组中第一个元素,返回删除的那个值,并将长度减 1
- pop()删除数组中最后一个元素,返回删除的那个值,并将长度减 1
- unshift() 往数组前面添加一个或多个数组元素,长度会改变
- push() 往数组结尾添加一个或多个数组元素,长度会改变
- concat() 连接数组
- slice() 切割数组,返回数组的一部分
- splice()插入、删除或替换数组的元素
- toLocaleString() 把数组转换成局部字符串
- toString()将数组转换成一个字符串
- forEach()遍历所有元素
- every()判断所有元素是否都符合条件
- sort()对数组元素进行排序
- map()对元素重新组装,生成新数组
- filter()过滤符合条件的元素
- find() 查找 返回满足提供的测试函数的第一个元素的值。否则返回 undefined。
- some() 判断是否有一个满足条件 ,返回布尔值
- fill() 填充数组
- flat() 数组扁平化
Function 函数对象,函数常用方法
- Function.arguments 传递给函数的参数
- Function.apply() 将函数作为一个对象的方法调用
- Function.call() 将函数作为对象的方法调用
- Function.caller 调用当前函数的函数
- Function.length 已声明的参数的个数
- Function.prototype 对象类的原型
- Function.toString() 把函数转换成字符串
Object 基础对象,对象常用方法
- Object 含有所有 JavaScript 对象的特性的超类
- Object.constructor 对象的构造函数
- Object.hasOwnProperty( ) 检查属性是否被继承
- Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型
- Object.propertyIsEnumerable( ) 是否可以通过 for/in 循环看到属性
- Object.toLocaleString( ) 返回对象的本地字符串表示
- Object.toString( ) 定义一个对象的字符串表示
- Object.valueOf( ) 指定对象的原始值
Date 日期时间对象,日期常用方法
- Date.getFullYear() 返回 Date 对象的年份字段
- Date.getMonth() 返回 Date 对象的月份字段
- Date.getDate() 返回一个月中的某一天
- Date.getDay() 返回一周中的某一天
- Date.getHours() 返回 Date 对象的小时字段
- Date.getMinutes() 返回 Date 对象的分钟字段
- Date.getSeconds() 返回 Date 对象的秒字段
- Date.getMilliseconds() 返回 Date 对象的毫秒字段
- Date.getTime() 返回 Date 对象的毫秒表示
Math 数学对象,数学常用方法
- Math 对象是一个
静态对象
- Math.PI 圆周率
- Math.abs() 绝对值
- Math.ceil() 向上取整(整数加 1,小数去掉)
- Math.floor() 向下取整(直接去掉小数)
- Math.round() 四舍五入
- Math.pow(x,y) 求 x 的 y 次方
- Math.sqrt() 求平方根
RegExp 正则表达式对象,正则常用方法
- RegExp.exec() 检索字符串中指定的值。返回找到的值,并确定其位置。
- RegExp.test( ) 检索字符串中指定的值。返回 true 或 false。
- RegExp.toString( ) 把正则表达式转换成字符串
- RegExp.globa 判断是否设置了 “g” 修饰符
- RegExp.ignoreCase 判断是否设置了 “i” 修饰符
- RegExp.lastIndex 用于规定下次匹配的起始位置
- RegExp.source 返回正则表达式的匹配模式
Error 异常对象
- Error.message 设置或返回一个错误信息(字符串)
- Error.name 设置或返回一个错误名
- Error.toString( ) 把 Error 对象转换成字符串
2. Set、Map、WeakSet、WeakMap
Set
、Map
、WeakSet
、WeakMap
是ES2015中新增的几个对象:
set类似于数组,但是成员的值都是唯一的,没有重复的值。
Set
本身是一个构造函数,用来生成 Set 数据结构。
Set
和WeakSet
与数组类似,准确的它他们是集合,这两者的区别就是Set
可以存储任何数据类型,而WeakSet
只能存储对象的引用,而且是弱引用;
Set
对象在实际开发中最常见的就是实现数据去重,示例代码如下:
1 | const arr = [1, 2, 2, 3, 4, 3, 5] |
map类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。
Map
和WeakMap
与对象类似,存储方式是键值对形式的,这两者的区别Map
的键值对都是可以是任意的而WeakMap
键必须是对象的引用而值可以是任意类型的。
3. 并发与并行的区别?
- 并发是宏观概念,我分别有任务 A 和任务 B,在一段时间内通过任务间的切换完成了这两个任务,这种情况就可以称之为并发。
- 并行是微观概念,假设 CPU 中存在两个核心,那么我就可以同时完成任务 A、B。同时完成多个任务的情况就可以称之为并行。
4. setTimeout、setInterval、requestAnimationFrame的区别
- setTimeout
执行该语句时,是立即把当前定时器代码推入事件队列,当定时器在事件列表中满足设置的时间值时将传入的函数加入任务队列,之后的执行就交给任务队列负责。但是如果此时任务队列不为空,则需等待,所以执行定时器内代码的时间可能会大于设置的时间。
返回值timeoutID
是一个正整数,表示定时器的编号。这个值可以传递给clearTimeout()来取消该定时器。
- setInterval
重复调用一个函数或执行一个代码片段,每次都精确的隔一段时间推入一个事件(但是,事件的执行时间不一定就不准确,还有可能是这个事件还没执行完毕,下一个事件就来了)。它返回一个 interval ID
,该 ID 唯一地标识时间间隔,因此你可以稍后通过调用 clearInterval() 来移除定时器。
技术上,clearTimeout()
和 clearInterval()
可以互换。但是,为了避免混淆,不要混用取消定时函数。
- requestAnimationFrame
是JS实现动画的一种方式,它告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行