持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天
点击查看活动详情
五、对象的扩展
Object.keys()方法,获取对象的所有属性名或方法名(不包括原形的内容),返回一个数组。
var obj={name: "john", age: "21", getName: function () { alert(this.name)}};
console.log(Object.keys(obj)); // ["name", "age", "getName"]
console.log(Object.keys(obj).length); //3
console.log(Object.keys(["aa", "bb", "cc"])); //["0", "1", "2"]
console.log(Object.keys("abcdef")); //["0", "1", "2", "3", "4", "5"]
Object.assign (),assign 方法将多个原对象的属性和方法都合并到了目标对象上面。可以接收多
个参数,第一个参数是目标对象,后面的都是源对象。
var target = {}; //目标对象
var source1 = {name : 'ming', age: '19'}; //源对象 1
var source2 = {sex : '女'}; //源对象 2
var source3 = {sex : '男'}; //源对象 3,和 source2 中的对象有同名属性 sex
Object.assign(target,source1,source2,source3);
console.log(target); //{name : 'ming', age: '19', sex: '男'}
六、for...of 循环
var arr=["小林","小吴","小佳"];
for(var v of arr){
console.log(v);
}
//小林 //小吴 //小佳
七、import 和 export
ES6 标准中,JavaScript 原生支持模块(module)了。这种将 JS 代码分割成不同功能的小块进行模块化,将不同功能的代码分别写在不同文件中,各模块只需导出公共接口部分,然后通过模块的导入的方式可以在其他地方使用。
export 用于对外输出本模块(一个文件可以理解为一个模块)变量的接口。
import 用于在一个模块中加载另一个含有 export 接口的模块。
import 和 export 命令只能在模块的顶部,不能在代码块之中。
八、Promise 对象
Promise 是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。
它有三种状态,分别是 pending-进行中、resolved-已完成、rejected-已失败。
promise 是一个异步函数,主要是为了解决异步处理回调地狱(也就是循环嵌套的问题)而产生的,有 3 种状态,Fulfilled 为成功的状态,Rejected 为失败的状态,Pending 既不是 Fulfilld也不是 Rejected 的状态,可以理解为 Promise 对象实例创建时候的初始状态,要会写promise 这个方法
Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用reject。对于已经实例化过的 promise 对象可以调用 promise.then() 方法,传递 resolve 和reject 方法作为回调。then()方法接收两个参数:onResolve 和 onReject,分别代表当前promise 对象在成功或失败时。