Skip to content

JS 常用对象和全局对象的常用方法 #70

@coconilu

Description

@coconilu

1. Object

静态方法:

Object.assign(target, ...sources),用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。
Object.create(proto, [propertiesObject]),创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。 
Object.is(value1, value2),判断两个值是否是相同的值。
Object.fromEntries(iterable) ,把键值对列表转换为一个对象。

Object.defineProperties(obj, props),直接在一个对象上定义新的属性或修改现有属性,并返回该对象。
Object.defineProperty(obj, prop, descriptor),直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
Object.getOwnPropertyDescriptor(obj, prop),返回指定对象上一个自有属性对应的属性描述符。
Object.getOwnPropertyDescriptors(obj),获取一个对象的所有自身属性的描述符。
Object.getOwnPropertyNames(obj),返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
Object.getOwnPropertySymbols(obj),返回一个给定对象自身的所有 Symbol 属性的数组。

Object.freeze(),冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。该方法返回被冻结的对象。
Object.isFrozen(obj),判断一个对象是否被冻结。(不可扩展,所有属性都是不可配置的,且所有数据属性(即没有getter或setter组件的访问器的属性)都是不可写的。)
Object.preventExtensions(obj),让一个对象变的不可扩展。
Object.isExtensible(obj),判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。
Object.seal(obj),封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。当前属性的值只要可写就可以改变。
Object.isSealed(obj),判断一个对象是否被密封。(不可 扩展 的,且所有自身属性都不可配置且因此不可删除(但不一定是不可写)的对象。)

Object.getPrototypeOf(obj),返回指定对象的原型(内部[[Prototype]]属性的值)。
Object.setPrototypeOf(obj, prototype),设置一个指定的对象的原型 ( , 内部[[Prototype]]属性)到另一个对象或  null。

Object.entries(obj),返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。
Object.keys(obj),返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 
Object.values(obj),返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )
  1. 通过赋值操作添加的普通属性是可枚举的,能够在属性枚举期间呈现出来(for...in 或 Object.keys 方法), 这些属性的值可以被改变,也可以被删除。Object.defineProperty允许修改默认的额外选项(或配置)。默认情况下,使用 Object.defineProperty() 添加的属性值是不可修改的。
  2. Object的API都只能获取自身的属性,要想获取原型链可以通过for...in
  3. entries()、keys()、values() 仅能获取可枚举属性,getOwnPropertyNames()可以获取不可枚举属性

实例属性和方法:

Object.prototype.__proto__
Object.prototype.constructor,返回创建实例对象的 Object 构造函数的引用。注意,此属性的值是对函数本身的引用,而不是一个包含函数名称的字符串。
Object.prototype.hasOwnProperty(prop),返回一个布尔值,指示对象自身属性中是否具有指定的属性,包括属性字符串名称或者 Symbol。
Object.prototype.isPrototypeOf(obj),测试一个对象是否存在于另一个对象(传入的参数)的原型链上。
Object.prototype.propertyIsEnumerable(prop),返回一个布尔值,表示指定的属性是否可枚举。
Object.prototype.toString()
Object.prototype.valueOf(),返回指定对象的原始值。你很少需要自己调用valueOf方法;当遇到要预期的原始值的对象时,JavaScript会自动调用它。

2. Array

静态方法

Array.from(arrayLike[, mapFn[, thisArg]]),从一个类似数组或可迭代对象中创建一个新的数组实例
Array.isArray(obj),确定传递的值是否是一个 Array
Array.of(element0[, element1[, ...[, elementN]]]),创建一个具有可变数量参数的新数组实例

实例方法

变异方法:
Array.prototype.copyWithin(target[, start[, end]]),浅复制数组的一部分到同一数组中的另一个位置
Array.prototype.fill(value[, start[, end]]),用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
Array.prototype.pop(),从数组中删除最后一个元素,并返回该元素的值。
Array.prototype.push(element1, ..., elementN),将一个或多个元素添加到数组的末尾,并返回新数组的长度。
Array.prototype.reverse(),将数组中元素的位置颠倒。
Array.prototype.shift(),从数组中删除第一个元素,并返回该元素的值。
Array.prototype.sort([compareFunction]),用原地算法对数组的元素进行排序,并返回数组。如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前。
Array.prototype.splice(start[, deleteCount[, item1[, item2[, ...]]]]),通过删除现有元素和/或添加新元素来更改一个数组的内容。
Array.prototype.unshift(element1, ..., elementN),将一个或多个元素添加到数组的开头,并返回新数组的长度。

非变异方法:
Array.prototype.concat(value1[, value2[, ...[, valueN]]]),用于合并两个或多个数组。
Array.prototype.entries(),返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。
Array.prototype.includes(searchElement[, fromIndex]),用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
Array.prototype.indexOf(searchElement[, fromIndex = 0]),返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
Array.prototype.lastIndexOf(searchElement[, fromIndex = arr.length - 1]),返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1
Array.prototype.join(separator = ","),将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。
Array.prototype.keys(),返回一个包含数组中每个索引键的Array Iterator对象。
Array.prototype.slice([begin[, end]]),返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。
Array.prototype.toLocaleString()
Array.prototype.toString(),返回一个字符串,表示指定的数组及其元素。
Array.prototype.values(),返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值。

高阶函数:
Array.prototype.every(callback(element[, index[, array]])[, thisArg]),测试数组的所有元素是否都通过了指定函数的测试。
Array.prototype.filter(callback(element[, index[, array]])[, thisArg]),创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 
Array.prototype.find(callback(element[, index[, array]])[, thisArg]),返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
Array.prototype.findIndex(callback(element[, index[, array]])[, thisArg]),返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1
Array.prototype.forEach(callback(element[, index[, array]])[, thisArg]),对数组的每个元素执行一次提供的函数。
Array.prototype.map(callback(element[, index[, array]])[, thisArg]),创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
Array.prototype.reduce(callback(accumulator, element[, index[, array]])[, initialValue]),对累加器和数组中的每个元素(从左到右)应用一个函数,将其简化为单个值。
Array.prototype.reduceRight(callback(accumulator, element[, index[, array]])[, initialValue]),接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。
Array.prototype.some(callback(element[, index[, array]])[, thisArg]),测试数组中的某些元素是否通过由提供的函数实现的测试。

3. Function

Function.caller,慎用,返回调用指定函数的函数
Function.length,指该函数有多少个必须要传入的参数,即形参的个数。形参的数量不包括剩余参数个数,仅包括第一个具有默认值之前的参数个数。
Function.name,返回函数实例的名称。
Function.prototype

Function.prototype.apply(thisArg, [argsArray]),调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。
Function.prototype.bind(thisArg[, arg1[, arg2[, ...]]]),创建一个新的函数, 当这个新函数被调用时其this置为提供的值,其参数列表前几项置为创建时指定的参数序列。
Function.prototype.call(thisArg, arg1, arg2, ...),调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表)

4. Date

静态方法:

Date.UTC(),接受的参数同日期构造函数接受最多参数时一样,返回从1970-1-1 00:00:00 UTC到指定日期的的毫秒数。(UTC:世界公认时间,区别去本地时区)
Date.now(),返回自1970年1月1日 00:00:00 UTC到当前时间的毫秒数。
Date.parse(),解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包含了不合法的日期数值(如:2015-02-31),则返回值为NaN。

实例方法:

Date.prototype.getDate(),根据本地时间,返回一个指定的日期对象为一个月中的第几天。
Date.prototype.getDay(),根据本地时间,返回一个具体日期中一周的第几天,0 表示星期天。
Date.prototype.getFullYear(),根据本地时间返回指定日期的年份。
Date.prototype.getHours(),根据本地时间,返回一个指定的日期对象的小时。
Date.prototype.getMilliseconds(),根据本地时间,返回一个指定的日期对象的毫秒数。
Date.prototype.getMinutes(),根据本地时间,返回一个指定的日期对象的分钟数。
Date.prototype.getMonth(),根据本地时间,返回一个指定的日期对象的月份,为基于0的值(0表示一年中的第一月)。
Date.prototype.getSeconds(),根据本地时间,返回一个指定的日期对象的秒数。
Date.prototype.getTime(),返回一个时间的格林威治时间数值(毫秒数)。
Date.prototype.getTimezoneOffset(),返回协调世界时(UTC)相对于当前时区的时间差值,单位为分钟。
Date.prototype.getUTCDate(),以世界时为标准
Date.prototype.getUTCDay(),以世界时为标准
Date.prototype.getUTCFullYear(),以世界时为标准
Date.prototype.getUTCHours(),以世界时为标准
Date.prototype.getUTCMilliseconds(),以世界时为标准
Date.prototype.getUTCMinutes(),以世界时为标准
Date.prototype.getUTCMonth(),以世界时为标准
Date.prototype.getUTCSeconds(),以世界时为标准

Date.prototype.setDate()
Date.prototype.setFullYear()
Date.prototype.setHours()
Date.prototype.setMilliseconds()
Date.prototype.setMinutes()
Date.prototype.setMonth()
Date.prototype.setSeconds()
Date.prototype.setTime(),以一个表示从1970-1-1 00:00:00 UTC计时的毫秒数为来为 Date 对象设置时间。
Date.prototype.setUTCDate()
Date.prototype.setUTCFullYear()
Date.prototype.setUTCHours()
Date.prototype.setUTCMilliseconds()
Date.prototype.setUTCMinutes()
Date.prototype.setUTCMonth()
Date.prototype.setUTCSeconds()

Date.prototype.toDateString(),美式英语和人类易读的形式返回一个日期对象日期部分的字符串。
Date.prototype.toISOString(),toISOString() 方法返回一个 ISO(ISO 8601 Extended Format)格式的字符串: YYYY-MM-DDTHH:mm:ss.sssZ。
Date.prototype.toJSON(),返回 Date 对象的字符串形式。
Date.prototype.toLocaleDateString(),返回该日期对象日期部分的字符串,该字符串格式因不同语言而不同。
Date.prototype.toLocaleString()返回该日期对象的字符串,该字符串格式因不同语言而不同。
Date.prototype.toLocaleTimeString(),返回该日期对象时间部分的字符串,该字符串格式因不同语言而不同。
Date.prototype.toString(),返回一个字符串,表示该Date对象。
Date.prototype.toTimeString(),以人类易读形式返回一个日期对象时间部分的字符串,该字符串以美式英语格式化。
Date.prototype.toUTCString(),把一个日期转换为一个字符串,使用UTC时区。
Date.prototype.valueOf(),和 Date.prototype.getTime() 方法一样。

5. Math

Math.E,欧拉常数,也是自然对数的底数, 约等于 2.718
Math.LN10,2的自然对数, 约等于0.693
Math.LN2,10的自然对数, 约等于 2.303
Math.LOG10E,以2为底E的对数, 约等于 1.443
Math.LOG2E,以10为底E的对数, 约等于 0.434
Math.PI,圆周率,一个圆的周长和直径之比,约等于 3.14159
Math.SQRT1_2,1/2的平方根, 约等于 0.707
Math.SQRT2,2的平方根,约等于 1.414

算术:
Math.abs(),指定数字 “x“ 的绝对值
Math.cbrt(),返回任意数字的立方根
Math.ceil(),返回大于或等于一个给定数字的最小整数
Math.clz32(),返回一个数字在转换成 32 无符号整形数字的二进制形式后, 开头的 0 的个数
Math.exp(),返回 ex,x 表示参数
Math.expm1(),返回 ex - 1
Math.floor(),返回小于或等于一个给定数字的最大整数
Math.fround(),将任意的数字转换为离它最近的单精度浮点数形式的数字
Math.hypot([value1[,value2, ...]]),返回它的所有参数的平方和的平方根
Math.imul(a, b),返回两个参数的类C的32位整数乘法运算的运算结果
Math.log(),返回一个数的自然对数
Math.log10(),返回一个数字以 10 为底的对数
Math.log1p(),返回一个数字加1后的自然对数 (底为 E), 既log(x+1)
Math.log2(),返回一个数字以 2 为底的对数
Math.max([value1[,value2, ...]]),返回一组数中的最大值
Math.min([value1[,value2, ...]]),返回零个或更多个数值的最小值。
Math.pow(base, exponent),返回基数(base)的指数(exponent)次幂
Math.random(),返回一个浮点,  伪随机数在范围[0,1)
Math.round(),返回一个数字四舍五入后最接近的整数
Math.sign(),返回一个数字的符号, 指示数字是正数,负数还是零
Math.sqrt(),返回一个数的平方根
Math.trunc(),会将数字的小数部分去掉,只保留整数部分

三角函数:
Math.acos(),返回一个数的反余弦值(单位为弧度)
Math.acosh(),返回一个数字的反双曲余弦值
Math.asin(),返回一个数值的反正弦(单位为弧度)
Math.asinh(),返回给定数字的反双曲正弦值
Math.atan(),返回一个数值的反正切(以弧度为单位)
Math.atan2(),返回其参数比值的反正切值
Math.atanh(),返回一个数值反双曲正切值
Math.cos(),返回一个数值的余弦值
Math.cosh(),回数值的双曲余弦函数
Math.sin(),返回一个数值的正弦值
Math.sinh(),返回一个数字(单位为角度)的双曲正弦值
Math.tan(),返回一个数值的正切值
Math.tanh(),返回一个数的双曲正切函数值

6. Promise

Promise.all(iterable),返回一个 Promise 实例,此实例在 iterable 参数内所有的 promise 都“完成(resolved)”或参数中不包含 promise 时回调完成(resolve);如果参数中  promise 有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败 promise 的结果。
Promise.race(iterable),返回一个 promise,一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝。
Promise.reject(reason),返回一个带有拒绝原因reason参数的Promise对象。
Promise.resolve(),返回一个以给定值解析后的Promise 对象。

Promise.prototype.catch(onRejected),返回一个Promise,并且处理拒绝的情况。它的行为与调用Promise.prototype.then(undefined, onRejected) 相同。
Promise.prototype.finally(onFinally),返回一个Promise,在执行then()和catch()后,都会执行finally指定的回调函数。
Promise.prototype.then(onFulfilled, onRejected),返回一个  Promise 。它最多需要有两个参数:Promise 的成功和失败情况的回调函数。

7. RegExp

RegExp.prototype.flags,返回一个字符串,由当前正则表达式对象的标志组成。
RegExp.prototype.global,表明正则表达式是否使用了 "g" 标志。
RegExp.prototype.ignoreCase,表明正则表达式是否使用了 "i" 标志。
RegExp.prototype.multiline,表明正则表达式是否使用了 "m" 标志。
RegExp.prototype.source,返回一个值为当前正则表达式对象的模式文本的字符串,该字符串不会包含正则字面量两边的斜杠以及任何的标志字符。
RegExp.prototype.sticky,反映了搜索是否具有粘性。
RegExp.prototype.unicode,表明正则表达式带有"u" 标志。 
RegExp.lastIndex,是正则表达式的一个可读可写的整型属性,用来指定下一次匹配的起始索引。

RegExp.prototype.exec(str),在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。
RegExp.prototype.test(str),执行一个检索,用来查看正则表达式与指定的字符串是否匹配。

8. Number

Number.EPSILON,表示 1 和大于 1 的最小的浮点数(可表示为 Number)的差值。
Number.MAX_SAFE_INTEGER,表示在 JavaScript 中最大的安全整数,Math.pow(2, 53) - 1
Number.MAX_VALUE,表示在 JavaScript 里所能表示的最大数值,1.79E+308
Number.MIN_SAFE_INTEGER,表示在 JavaScript中最小的安全的integer型数字,-(Math.pow(2, 53) - 1)
Number.MIN_VALUE,表示在 JavaScript 中所能表示的最小的正值
Number.NEGATIVE_INFINITY,表示负无穷大
Number.NaN,表示“非数字”(Not-A-Number),和 NaN 相同。
Number.POSITIVE_INFINITY,表示正无穷大

Number.isFinite(),检测传入的参数是否是一个有穷数
Number.isInteger(),用来判断给定的参数是否为整数
Number.isNaN(),确定传递的值是否为 NaN和其类型是 Number
Number.isSafeInteger(),判断传入的参数值是否是一个“安全整数”(safe integer)
Number.parseFloat(),把一个字符串解析成浮点数
Number.parseInt(),根据给定的进制数把一个字符串解析成整数
Number.prototype.toExponential(),以指数表示法返回该数值字符串表示形式
Number.prototype.toFixed(digits),数值的定点数表示法的字符串形式
Number.prototype.toPrecision(precision),以指定的精度返回该数值对象的字符串表示

9. String

String.length
String.fromCharCode(num1, ..., numN),返回使用指定的Unicode值序列创建的字符串
String.fromCodePoint(num1[, ...[, numN]]),返回使用指定的代码点序列创建的字符串
String.raw(),模板字符串的标签函数

String.prototype.charAt(index),从一个字符串中返回指定的字符
String.prototype.charCodeAt(index),返回给定索引处(String中index索引处)字符的 UTF-16 代码单元值的数字
String.prototype.codePointAt(pos),返回 一个 Unicode 编码点值的非负整数
String.prototype.concat(string2, string3[, ..., stringN]),将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
String.prototype.endsWith(searchString [, position]),判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true  false
String.prototype.includes(searchString[, position]),判断一个字符串是否包含在另一个字符串中,根据情况返回 true  false
String.prototype.indexOf(searchValue[, fromIndex]),返回调用  String 对象中第一次出现的指定值的索引,开始在 fromIndex进行搜索
String.prototype.lastIndexOf(searchValue[, fromIndex]),返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1。从该字符串的后面向前查找,从 fromIndex 处开始
String.prototype.localeCompare(compareString[, locales[, options]]),返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同
String.prototype.match(regexp),返回正则表达式匹配的数组结果
String.prototype.normalize(),按照指定的一种 Unicode 正规形式将当前字符串正规化
String.prototype.padEnd(targetLength [, padString]),用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充
String.prototype.padStart(targetLength [, padString]),用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的开始(左侧)开始填充
String.prototype.repeat(count),构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本
String.prototype.replace(regexp|substr, newSubStr|func),返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式, 替换值可以是一个字符串或者一个每次匹配都要调用的函数
String.prototype.search(regexp),执行正则表达式和 String对象之间的一个搜索匹配,返回首次匹配索引
String.prototype.slice(beginSlice[, endSlice]),提取一个字符串的一部分,并返回一新的字符串
String.prototype.split([separator[, limit]]),使用指定的分隔符字符串将一个String对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置
String.prototype.startsWith(searchString [, position]),判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true  false
String.prototype.substr(start[, length]),返回一个字符串中从指定位置开始到指定字符数的字符
String.prototype.substring(indexStart[, indexEnd]),返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集
String.prototype.toLocaleLowerCase(),返回调用字符串值转换为小写的值
String.prototype.toLocaleUpperCase(),返回调用字符串值转换为大写的值
String.prototype.toLowerCase(),调用该方法的字符串值转为小写形式
String.prototype.toUpperCase(),将调用该方法的字符串值转换为大写形式
String.prototype.trim(),从一个字符串的两端删除空白字符。空白字符是所有的空白字符 (space, tab, no-break space ) 以及所有行终止符字符(如 LF,CR)。
String.prototype.trimLeft(),从一个字符串的右端移除空白字符
String.prototype.trimRight(),从一个字符串的左端移除空白字符

String对象是不可变元素,所以所有方法都是非变异方法

全局对象

decodeURI()
decodeURIComponent(),解码由 encodeURIComponent 方法或者其它类似方法编码的部分统一资源标识符(URI)
encodeURI()
encodeURIComponent(),对统一资源标识符(URI)的组成部分进行编码的方法。
eval(),将传入的字符串当做 JavaScript 代码进行执行
isFinite()
isNaN()
null,一个字面量,它不像undefined 是全局对象的一个属性。null 是表示缺少的标识,指示变量未指向任何对象。
parseFloat
parseInt
undefined,undefined是全局对象的一个属性。

encodeURIComponent() 能编码"; / ? : @ & = + $ , #"这些特殊字符,比encodeURI()更彻底

参考:
JavaScript 标准库
Object
Array
Function
Date
Math
Promise
RegExp

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions