Object 对象
1. Object静态方法
-
(1) 对象属性模型的相关方法
- Object.keys() : 获取对象自身的可遍历的属性
- Object.getOwnPropertyNames() : 获取对象还返回不可枚举的属性名
- Object.getOwnPropertyDescriptor():获取某个属性的描述对象。
- Object.defineProperty():通过描述对象,定义某个属性。
- Object.defineProperties():通过描述对象,定义多个属性。
-
(2) 控制对象状态的方法
- Object.preventExtensions():防止对象扩展。
- Object.isExtensible():判断对象是否可扩展。
- Object.seal():禁止对象配置。
- Object.isSealed():判断一个对象是否可配置。
- Object.freeze():冻结一个对象。
- Object.isFrozen():判断一个对象是否被冻结。
-
(3) 原型链相关方法
- Object.create():该方法可以指定原型对象和属性,返回一个新的对象。
- Object.getPrototypeOf():获取对象的Prototype对象。
2.Object 的实例方法
- Object.prototype.valueOf():返回当前对象对应的值。
- Object.prototype.toString():返回当前对象对应的字符串形式。
- Object.prototype.toLocaleString():返回当前对象对应的本地字符串形式。
- Object.prototype.hasOwnProperty():判断某个属性是否为当前对象自身的属 性,还是继承自原型对象的属性。
- Object.prototype.isPrototypeOf():判断当前对象是否为另一个对象的原型。
- Object.prototype.propertyIsEnumerable():判断某个属性是否可枚举。
属性描述对象
1.元属性
- value 属性是目标属性的值。
- writable 属性是一个布尔值,决定了目标属性的值(value)是否可以被改变。
- enumerable(可遍历性)返回一个布尔值,表示目标属性是否可遍历。
- configurable (可配置性)返回一个布尔值,决定了是否可以修改属性描述对象。也 就是说,configurable为false时,value、writable、enumerable和configurable都不能被修改了。
- 存取器 除了直接定义以外,属性还可以用存取器(accessor)定义。其中,存值函数称为setter,使用属性描述对象的set属性;取值函数称为getter,使用属性描述对象的get属性。
Array 对象
1.静态方法
- Array.isArray 方法返回一个布尔值,表示参数是否为数组。它可以弥补typeof运算符的不足。
2.实例方法
- valueOf 方法是一个所有对象都拥有的方法,表示对该对象求值。不同对象的valueOf方法不尽一致,数组的valueOf方法返回数组本身。
- toString 方法也是对象的通用方法,数组的toString方法返回数组的字符串形式。
- push 方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
- pop 方法用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。
- shift() 方法用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。
- unshift() 方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
- join() 方法以指定参数作为分隔符,将所有数组成员连接为一个字符串返回。如果不提供参数,默认用逗号分隔。
- concat 方法用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。
- reverse 方法用于颠倒排列数组元素,返回改变后的数组。注意,该方法将改变原数组。
- slice 方法用于提取目标数组的一部分,返回一个新数组,原数组不变。
- splice 方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。
- sort 方法对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变。
- map 方法将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回。
- forEach 方法与map方法很相似,也是对数组的所有成员依次执行参数函数。但是,forEach方法不返回值,只用来操作数据。这就是说,如果数组遍历的目的是为了得到返回值,那么使用map方法,否则使用forEach方法。
- filter 方法用于过滤数组成员,满足条件的成员组成一个新数组返回。
- some 方法是只要一个成员的返回值是true,则整个some方法的返回值就是true,否则返回false。
- every 方法是所有成员的返回值都是true,整个every方法才返回true,否则返回false。
- reduce 是从左到右处理(从第一个成员到最后一个成员)依次处理数组的每个成员,最终累计为一个值
- reduceRight 则是从右到左(从最后一个成员到第一个成员),依次处理数组的每个成员,最终累计为一个值
- indexOf 方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。
- lastIndexOf 方法返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1。
3. 链式引用
var users = [
{name: 'tom', email: 'tom@example.com'},
{name: 'peter', email: 'peter@example.com'}
];
users
.map(function (user) {
return user.email;
})
.filter(function (email) {
return /^t/.test(email);
})
.forEach(function (email) {
console.log(email);
});
// "tom@example.com"