@Wangww0925
2019-08-26T07:43:16.000000Z
字数 1741
阅读 234
ES6
对象对于Javascript是非常重要的。在ES6中对象有了很多新特性。
in是用来判断对象或者数组中是否存在某个值的。我们先来看一下用in如何判断对象里是否有某个值。
let obj = {
a: '123',
b: 'abc'
}
console.log('a' in obj); // true
console.log('c' in obj); // false
ES5赋值、方法
let name = 'www';
let age = 18;
var obj = {
name: name,
age: age,
skill: function (){
console.log('web');
}
};
console.log(obj); // {name: "www", age: 18}
obj.skill(); // web
ES6赋值简化 【属性名与属性值同名】
ES5的写法麻烦,在ES6中允许把声明的变量直接赋值给对象,大大减少代码量,我们看下面的例子。
let name = 'www';
let age = 18;
var obj = {name , age};
console.log(obj); // {name: "www", age: 18}
ES6方法的简化
var obj = {
getName: ()=>console.log("13"),
fun(){
console.log("www")
}
}
obj.getName(); // 13
obj.fun(); // www
有时候我们会在后台取出key值,而不是我们前台定义好的,这时候我们如何构建我们的key值那。比如我们在后台取了一个key值,然后可以用[ ] 的形式,进行对象的构建。
let key = 'skill';
var obj = {
[key]: 'web'
}
console.log(obj); // {skill: "web"}
注意: [key] 相当于 'skill', key是上面定义的变量
对象方法就是把对象中的属性,用匿名函数的形式编程方法。
let obj = {
add: (a, b) => a + b
}
console.log(obj.add(1, 2)); // 3
对象的比较方法,以前进行对象值的比较,经常使用===来判断,比如下面的代码:
let obj1 = {name: 'www'};
let obj2 = {name: 'www'};
console.log(obj1.name === obj2.name); // true
那ES6为我们提供了is方法进行对比。
let obj1 = {name: 'www'};
let obj2 = {name: 'www'};
console.log(Object.is(obj1.name, obj2.name)); // true
区分=== 和 is方法的区别是什么,看下面的代码输出结果。
console.log(+0 === -0); // true
console.log(Object.is(+0, -0)); // false
console.log(NaN === NaN); // false
console.log(Object.is(NaN, NaN)); // true
这太诡异了,这要怎么记呐,===为同值相等,is()为严格相等。
操作数组时我们经常使用数组合并,那对象也有合并方法,那就是assgin( )。看一下具体的用法。
let obj1 = {a: '123'};
let obj2 = {b: 'abc'};
let obj3 = {c: 'www'};
let obj4 = Object.assign(obj1, obj2, obj3);
console.log(obj1); // {a: "123", b: "abc", c: "www"}
console.log(obj2); // {b: "abc"}
console.log(obj3); // {c: "www"}
console.log(obj4); // {a: "123", b: "abc", c: "www"}