数组和对象的原生方法

122 阅读6分钟

Object 的一些方法和属性也是很常用的。

一、属性

Object 自带一个 prototype 的属性,即 Object.prototype,Object.prototype 本身也是一个对象,也会有一些属性和方法。如下:

1、属性

Object.prototype.writable:默认为 false

Object.prototype.enumerable:默认为 false

Object.prototype.configurable:默认为 false

Object.prototype.constructor:用于创建一个对象的原型。

2、常用方法

Object.prototype.hasOwnProperty():返回一个布尔值,表示某个对象是否含有指定的 属性,而且此属性非原型链继承。

Object.prototype.isPrototypeOf():返回一个布尔值,表示指定的对象是否在本对象的 原型链中。

Object.prototype.propertyIsEnumerable():判断指定属性是否可枚举。

Object.prototype.toString():返回对象的字符串表示。

Object.prototype.watch():给对象的某个属性增加监听。

Object.prototype.unwatch():移除对象某个属性的监听。

Object.prototype.valueOf():返回指定对象的原始值。

二、方法

Object.assign(target, …sources):把任意多个的源对象自身的可枚举属性拷贝给目标 对象,然后返回目标对象。

Object.create(proto,[propertiesobject]):创建一个拥有指定原型和若干个指定属性的象。

Object.defineProperties(obj, props):在一个对象上添加或修改一个或者多个自有属 性,并返回该对象。

Object.defineProperty(obj, prop, descriptor):直接在一个对象上定义一个新属性,或 者修改一个已经存在的属性, 并返回这个对象。obj:需要定义属性的对象。prop: 需定义或修改的属性的名字。descriptor:将被定义或修改的属性的描述符。 Object.entries(obj):返回一个包含由给定对象所有可枚举属性的属性名和属性值组成 的 [属性名,属性值] 键值对的数组,数组中键值对的排列顺序和使用 for…in 循环遍历 该对象时返回的顺序一致。

举例:
var obj = { foo: “bar”, baz: 42 };
console.log(Object.entries(obj)); // [ [‘foo’, ‘bar’], [‘baz’, 42] ]

Object.freeze(obj):冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能 修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举 性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的 对象。

Object.getOwnPropertyDescriptor(obj, prop):返回指定对象上一个自有属性对应的属 性描述符。

Object.getOwnPropertyNames(obj):返回一个由指定对象的所有自身属性的属性名 (包括不可枚举属性)组成的数组。

举例:
// 类数组对象
var obj = { 0: “a”, 1: “b”, 2: “c”};
console.log(Object.getOwnPropertyNames(obj).sort()); // [“0”, “1”, “2”]

Object.getPrototypeOf(object):返回该对象的原型。

Object.is(value1, value2):判断两个值是否是同一个值。

Object.isExtensible(obj):判断一个对象是否是可扩展的(是否可以在它上面添加新的 属性)。

Object.isFrozen(obj):判断一个对象是否被冻结(frozen)。

Object.isSealed(obj):判断一个对象是否是密封的(sealed)。密封对象是指那些不 可 扩展 的,且所有自身属性都不可配置的(non-configurable)且属性不可删除的对 象(其可以是可写的)。

Object.keys(obj):返回一个由给定对象的所有可枚举自身属性的属性名组成的数组, 数组中属性名的排列顺序和使用 for-in 循环遍历该对象时返回的顺序一致

举例:
var arr = [“a”, “b”, “c”];
alert(Object.keys(arr)); // 弹出”0,1,2”

// 类数组对象

var obj = { 0 : “a”, 1 : “b”, 2 : “c”};

alert(Object.keys(obj)); // 弹出”0,1,2” Object.preventExtensions(obj):让一个对象变的不可扩展,也就是永远不能再添加新的属性。

Object.setPrototypeOf(obj, prototype):将一个指定的对象的原型设置为另一个对象或 者 null

Object.values(obj):返回一个包含指定对象所有的可枚举属性值的数组,数组中的值 顺序和使用 for…in 循环遍历的顺序一样。

举例:
var obj = { foo: “bar”, baz: 42 };
console.log(Object.values(obj)); // [‘bar’, 42]

数组的方法

Array.length 返回或设置一个数组中的元素个数 设置 length 属性的值来截断任何数组

Array.from() : 对伪数组或可迭代对象(包括 arguments Array,Map,Set,String…)转换成数组对象

Array.isArray() 用于确定传递的值是否是一个 Array

Array.isArray([]) => true; Array.isArray({}) => false;

concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数 组。

copyWithin(target, start, end) 浅复制数组的一部分到同一数组中的另一个位置

every(callback) 方法测试数组的所有元素是否都通过了指定函数的测试

fill() 用一个固定值填充一个数组中从起始索引到终止索引内的全部元素

filter() 创建一个新数组, 其包含通过所提供函数实现的测试的所有元素

find() 返回数组中满足提供的测试函数的第一个元素的值

findIndex() 返回数组中满足提供的测试函数的第一个元素的索引

forEach() 方法对数组的每个元素执行一次提供的函数

includes() 用来判断一个数组是否包含一个指定的值,如果是,酌情返回 true 或 false

indexOf() 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

join() 将数组(或一个类数组对象)的所有元素连接到一个字符串中

lastIndexOf () 返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索 引,如果不存在则返回 -1。从数组的后面向前查找

map() 创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回 的结果

pop() 从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度

push() 将一个或多个元素添加到数组的末尾

reduce() 累加器和数组中的每个元素(从左到右)应用一个函数

reduceRight() 接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减 少为单个值。

reverse() 方法将数组中元素的位置颠倒。

shift() 从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度

slice() 返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数 组对象

some() 测试数组中的某些元素是否通过由提供的函数实现的测试。

sort() 当的位置对数组的元素进行排序,并返回数组。

splice() 通过删除现有元素和/或添加新元素来更改一个数组的内容

toLocaleString() 返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleStrin g 方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗 号 “,”)隔开

toString() 返回一个字符串,表示指定的数组及其元素

unshift() 将一个或多个元素添加到数组的开头,并返回新数组的长度