Es5:
数组方法:
"use strict" 严格方法
String.trim() 修改字符串前后空格
Array.isArray() 判断是否为数组
Array.forEach() 便利数组
Array.map() 遍历数组返回新的数组
Array.filter() 过滤数组返回新的数组
Array.reduce() 便利求和
Array.reduceRight() 便利求和从右开始加
Array.every() 是否所有的选项都符合判断
Array.some() 是否存在选项符合判断
Array.indexOf() 从开始处获取数组中数据的下标,不存在返回-1,适用于非对象数组
Array.lastIndexOf() 从末尾处获取数组中数据的下标,不存在返回-1,适用于非对象数组
JSON.parse() Json解析
JSON.stringify() 转Json
Date.now() 获取当前时间毫秒数
对象方法:
getter和setter
ES5 允许您使用类似于获取或设置属性的语法来定义对象方法。
这个例子为名为 fullName 的属性创建一个 getter:
// 创建对象:
var person = {
firstName: "Bill",
lastName : "Gates",
get fullName() {
return this.firstName + " " + this.lastName;
}
};
// 使用 getter 显示来自对象的数据:
document.getElementById("demo").innerHTML = person.fullName;
var person = {
firstName: "Bill",
lastName : "Gates",
language : "NO",
get lang() {
return this.language;
},
set lang(value) {
this.language = value;
}
};
// 使用 setter 设置对象属性:
person.lang = "en";
// 使用 getter 显示来自对象的数据:
document.getElementById("demo").innerHTML = person.lang;
Object.defineProperty()
是 ES5 中的新对象方法。它允许您定义对象属性和/或更改属性的值和/或元数据。
// 创建对象:
var person = {
firstName: "Bill",
lastName : "Gates",
language : "NO",
};
// 更改属性:
Object.defineProperty(person, "language", {
value: "EN",
writable : true, //是否可更改
enumerable : true, //是否可枚举
configurable : true //以上两个配置是否可修改,是否可删除,但要注意,此配置不可逆
});
Object.defineProperty(object, property, descriptor) 添加或更改对象属性
Object.defineProperties(object, descriptors) 添加或更改多个对象属性
Object.getOwnPropertyDescriptor(object, property) 访问属性
Object.getOwnPropertyNames(object) 将所有属性作为数组返回
Object.keys(object) 将可枚举属性作为数组返回
Object.getPrototypeOf(object) 访问原型
Object.preventExtensions(object) 防止向对象添加属性
Object.isExtensible(object) 如果可以将属性添加到对象,则返回 true
Object.seal(object) 防止更改对象属性(而不是值)
Object.isSealed(object) 如果对象被密封,则返回 true
Object.freeze(object) 防止对对象进行任何更改
Object.isFrozen(object) 如果对象被冻结,则返回 true
Es6:
取幂运算符(**
)将第一个操作数提升到第二个操作数的幂。x ** y
的结果与 Math.pow(x,y)
相同
Array.find()
方法返回通过测试函数的第一个数组元素的值
Array.findIndex()
方法返回通过测试函数的第一个数组元素的索引。
Number.isInteger()
,如果参数是整数,则 Number.isInteger()
方法返回 true
。
Number.isSafeInteger()
,如果参数是安全整数,则 Number.isSafeInteger()
方法返回 true
。
isFinite(),
如果参数为 Infinity
或 NaN
,则全局 isFinite()
方法返回 false。
isNaN()
,如果参数是 NaN
,则全局 isNaN()
方法返回 true
。否则返回 false。
Es2016:
幂运算符 (**
) 将第一个操作数提高到第二个操作数的幂。
let z = x ** 2;//25
Array.includes()
,ECMAScript 2016 将 Array.prototype.includes
引入数组。这允许我们检查元素是否存在于数组中 ,适用于非对象数组
Es2017:
padStart
和 padEnd,
ECMAScript 2017 添加了两个 String 方法:padStart
和 padEnd
,以支持在字符串的开头和结尾进行填充。ie不支持
let str = "5";
str = str.padStart(4,0);
// 结果是: 0005
let str = "5";
str = str.padEnd(4,0);
// 结果是: 5000
Object.entries() 方法返回对象中键/值对的数组:
const person = {
firstName : "Bill",
lastName : "Gates",
age : 50,
eyeColor : "blue"
};
console.log(Object.entries(person));
结果:
[
[
"firstName",
"Bill"
],
[
"lastName",
"Gates"
],
[
"age",
50
],
[
"eyeColor",
"blue"
]
]
Object.values()
类似 Object.entries()
,但返回对象值的单维数组。
Object.values()
类似 Object.keys()
,但返回对象值的单维数组。
Es2018:
ECMAScript 2018 使用 Promise.finally
完成了 Promise 对象的完整实现
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
ECMAScript 2018 添加了 Rest 属性。这允许我们破坏一个对象并将剩余物收集到一个新对象上:
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }