大家好,本人名叫苏日俪格,大家叫我 (格格) 就好,在上一章节中我们学到了数组新增方法的用法,下面我们一起来继续学习对象:
1. json
让我们先来看看ES6之前的写法:let name = '苏日俪格';
let age = 24;
let json = {
name: name,
age: age,
show: function(){
return this.name;
}
}
console.log(json); // {name: "苏日俪格", age: 24}
在让我们看看ES6中的json的写法有什么不同:let name = '苏日俪格';
let age = 24;
let json = {
name,
age,
show(){
return this.name;
}
}
console.log(json); // {name: "苏日俪格", age: 24}
显而易见,当json的key和value相同的时候,可以简写,里面的函数也可以简写;这种写法一般在vue中常用
2. Object.is()
用来比较两个值是否相等,解决了NAN不等于自己本身的问题console.log(Object.is(NaN,NaN)); // true
console.log(Object.is(+0,-0)); // false
3. Object.assign()
目前我了解的有两个功能:
① 用来合并对象:
Object.assign(目标对象,原对象1,原对象2…) 也就是说把后面的所有的原对象都整合成前面的目标对象,整合的过程中后面的原对象会覆盖掉前面的原对象,举个例子:let json1 = {a:1}
let json2 = {a:2,b:2}
let json3 = {c:3}
let json = Object.assign({},json1,json2,json3);
console.log(json); // {a: 2, b: 2, c: 3}
json2中的a把json1中的a覆盖掉了,整合成新的对象;
这个用法一般会用在和后台数据交互的时候,将后台的数据放进来,没有数据的给个默认值,有数据的默认值就会被数据所替换:let json = Object.assign({},defaults,datas);
② 克隆/复制一个对象:
下面就以复制一个数组为例子:let arr = ['aaa','bbb','ccc'];
let newArr = Object.assign([],arr);
arr.push('ddd');
console.log(arr); // ["aaa", "bbb", "ccc", "ddd"]
console.log(newArr); // ["aaa", "bbb", "ccc"]
不知道大家还记不记得上面提到的for…of循环,里面的例子还用到了以下几种ES2017的对象方法:
4. Object.keys()
输出json对象中的每一个key:let json = {
a: 1,
b: 2,
c: 3
}
for (let key of Object.keys(json)) {
console.log(key);
}
输出结果:
5. Object.entries()
输出json对象中的每一对key和value:let json = {
a: 1,
b: 2,
c: 3
}
for (let key of Object.entries(json)) {
console.log(key);
}
输出结果:
6. Object.values()
输出json对象中的每一个value:let json = {
a: 1,
b: 2,
c: 3
}
for (let key of Object.values(json)) {
console.log(key);
}
输出结果:
以上三种方法可以用解构赋值的方式简写成:let {keys,values,entries} = Object; // 因为前面三个变量名也是Object的三个方法,因此可以解构
let json = {
a: 1,
b: 2,
c: 3
}
for (let key of keys(json)) {
console.log(key);
}
for (let value of values(json)) {
console.log(value);
}
for (let item of entries(json)) {
console.log(item);
}
7. 对象扩展运算符
在ES2018中给对象新出了一个扩展运算符,也就是可以把…用在对象身上,一是可以解构:let {x,y,...z} = {x:1, y:2, a:3, b:4}
console.log(x,y,z); // 1 2 {a: 3, b: 4}
二是可以复制一个json对象:let json = {x:1, y:2}
let newJson = {...json};
delete(json.x); // 和 delete json.x 是一个意思
console.log(json); // {y: 2}
console.log(newJson); // {x: 1, y: 2}
关于对象我们都已经了然于心,预知Promise如何,请听下回分解 (^∀^)/~~~
本文的所有内容均是一字一句敲上去的,希望大家阅读完本文可以有所收获,因为能力有限,掌握的知识也是不够全面,欢迎大家提出来一起分享!谢谢O(∩_∩)O~
欢迎访问我的GitHub,喜欢的可以star,项目随意fork,支持转载但要下标注,同时恭候:个人博客