【JavaScript】标准库方法列举

标准库

  • 1. Object 对象
    • 1.1 Object 的静态方法
    • 1.2 Object 的实例方法
  • 2. 属性描述对象
    • 2.1 元属性
    • 2.2 控制对象状态
  • 3. Array 对象
    • 3.1 实例方法
  • 4. 包装对象
    • 4.1 Boolean 对象
    • 4.2 Number 对象
    • 4.3 String 对象
      • 4.3.1 静态方法:String.fromCharCode()
      • 4.3.2 实例属性和方法
  • 5. Math 对象
  • 6. Date 对象
    • 6.1 静态方法
    • 6.2 实例方法
  • 7. RegExp 对象
    • 7.1 实例方法
    • 7.2 匹配规则
  • 8. JSON 对象
    • 8.1 JSON 格式
    • 8.2 JSON 对象

1. Object 对象

JavaScript 的所有其他对象都继承自Object对象,即那些对象都是Object的实例。

  • Object对象的原生方法分成两类:
    Object本身的方法:直接定义在Object对象的方法
    Object的实例方法:定义在Object原型对象Object.prototype上的方法
  • Object本身是一个函数,可以当作工具方法使用,将任意值转为对象。
  • Object构造函数的首要用途,是直接通过它来生成新对象。

虽然用法相似,但是Object(value)new Object(value)两者的语义是不同的,Object(value)表示将value转成一个对象,new Object(value)则表示新生成一个对象,它的值是value

1.1 Object 的静态方法

  • Object.keys方法(只返回可枚举的属性,更常用)和Object.getOwnPropertyNames方法都用来遍历对象的属性。

1.2 Object 的实例方法

  • Object.prototype.valueOf():返回当前对象对应的值。JavaScript 自动类型转换时会默认调用这个方法,可以用自定义的obj.valueOf覆盖Object.prototype.valueOf
  • Object.prototype.toString():返回当前对象对应的字符串形式。数组、字符串、函数、Date 对象都分别部署了自定义的toString方法,覆盖了Object.prototype.toString方法。
  • Object.prototype.toLocaleString():返回当前对象对应的本地字符串形式。
  • Object.prototype.hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。
  • Object.prototype.isPrototypeOf():判断当前对象是否为另一个对象的原型。
  • Object.prototype.propertyIsEnumerable():判断某个属性是否可枚举。

2. 属性描述对象

JavaScript 提供了一个内部数据结构,用来描述对象的属性,控制它的行为,比如该属性是否可写、可遍历等等。

{
   
  value: undefined,
  writable: true,
  enumerable: true, //是否可遍历
  configurable: true, //是否可配置
  get: undefined,
  set: undefined
}

一旦定义了取值函数get(或存值函数set),就不能将writable属性设为true,或者同时定义value属性,否则会报错。


Object.getOwnPropertyDescriptor() - 获取属性描述对象。- 第一个参数是目标对象,第二个参数是一个字符串,对应目标对象的某个属性名。- 只能用于对象自身的属性,不能用于继承的属性。
Object.getOwnPropertyNames() 返回一个数组,成员是参数对象自身的全部属性的属性名,不管该属性是否可遍历。
Object.defineProperty(),Object.defineProperties() - 通过属性描述对象,定义或修改一个属性,然后返回修改后的对象
  • 三个参数:object属性所在对象;propertyName字符串【属性名】;attributesObject属性描述对象
  • writable、configurable、enumerable这三个属性的默认值都为false |
    | propertyIsEnumerable() | - 返回一个布尔值,用来判断某个属性是否可遍历
  • 只能用于判断对象自身的属性 |

2.1 元属性

属性描述对象的各个属性称为“元属性”。

value - 目标属性的值- 只要writable和configurable有一个为true,就允许改动value
writable - 布尔值,决定了目标属性的值是否可以被改变- 如果原型对象的某个属性的writable为false,那么子对象将无法自定义这个属性。【除非覆盖属性描述对象忽视原型链】
enumerable - 表示目标属性是否可遍历
configurable - 决定了是否可以修改属性描述对象

2.2 控制对象状态

有时需要冻结对象的读写状态,防止对象被改变。JavaScript 提供了三种冻结方法,最弱的一种是Object.preventExtensions,其次是Object.seal,最强的是Object.freeze

Object.preventExtensions() 使得一个对象无法再添加新的属性
Object.isExtensible() 检查是否可以为一个对象添加属性
Object.seal() - 使得一个对象既无法添加新属性,也无法删除旧属性- 实质是把属性描述对象的configurable属性设为false
Object.isSealed() 检查一个对象是否使用了Object.seal方法
Object.freeze() 使得一个对象无法添加新属性、无法删除旧属性、也无法改变属性的值,使得这个对象实际上变成了常量
Object.isFrozen() 检查一个对象是否使用了Object.freeze方法

BUG:可以通过改变原型对象,来为对象增加属性;
如果属性值是对象,上面这些方法只能冻结属性指向的对象,而不能冻结对象本身的内容

3. Array 对象

Array是 JavaScript 的原生对象,同时也是一个构造函数,可以用它生成新的数组。

  • 缺陷:不同参数个数会导致不一样的行为,因此建议直接使用数组字面量生成新数组。
  • Array.isArray()返回一个布尔值,表示参数是否为数组

3.1 实例方法

valueOf(),toString() - valueOf方法是一个所有对象都拥有的方法,表示对该对象求值- toString方法也是对象的通用方法,数组的toString方法返回数组的字符串形式。
push(),pop() 增加or删除数组最后一个元素,会改变原数组
shift(),unshift() 增加or删除数组第一个元素,会改变原数组
concat() 用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。
reverse() 颠倒排列数组元素,返回改变后的的数组
slice() 提取目标数组的一部分,返回一个新数组,原数组不变。
splice() 删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。
sort() 默认按字典顺序对数组成员排序,arr.sort([compareFunction])用来指定按某种顺序进行排列的函数。
map() 将数组的所有成员依次传入参数函数,把每一次的执行结果组成一个新数组返回
forEach() 同map相似,但不返回值,只操作数据
filter() 过滤数组成员,满足条件的成员组成一个新数组返回。
reduce(),reduceRight() 依次处理数组的每个成员,最终累计为一个值
indexOf(),lastIndexOf() 返回给定元素在数组中第一次/最后一次出现的位置

4. 包装对象

所谓“包装对象”,指的是与数值、字符串、布尔值分别相对应的NumberStringBoolean三个原生对象。这三个原生对象可以把原始类型的值变成(包装成)对象。

4.1 Boolean 对象

作为构造函数,它主要用于生成布尔值的包装对象实例。

if (new Boolean(false)) {
   //所有对象对应的布尔值都是true
  console.log('true');
} // true

if (new Boolean(false).valueOf()) {
   //返回实例对应的初始值
  console.log('true');
} // 无输出

Boolean对象除了可以作为构造函数,还可以单独使用,将任意值转为布尔值。这时Boolean就是一个单纯的工具方法。

Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean('') // false
Boolean(NaN) // false

Boolean(1) // true
Boolean('false') // true
Boolean([]) // true
Boolean({
   }) // true
Boolean(function () {
   }) // true
Boolean(/foo/)

你可能感兴趣的:(web前端开发,javascript)