1 省略V
当一个对象的k、v相同(k的名字和v的变量名相同),此时可以省略v。
比如下面有三个变量a、b、c,要作为一个对象的属性名a、b、c,同时值也是1、2、3。因为k、v一致,此时就可以省略v:
var a = 1;
var b = 2;
var c = 3;
var obj = {
a ,
b ,
c
}
console.log(obj);
这种省略v的写法非常常见:
var result = (function(){
var s = 0;
for (var i = 0; i <= 100; i++) {
s += i;
};
return s;
})();
var json = {result};
console.log(json);
//省略V的时候K不能有引号!
对象的方法可以简写
var obj = {
a : 1,
**fn : function(){
console.log(this.a);
}**
}
obj.fn();
现在简写为:
var obj = {
a : 1,
**fn(){
console.log(this.a);
}**
}
obj.fn();
Object.keys()和Object.values()
Object.keys()返回对象的键名数组;
Object.values()返回对象的值数组;
4 Object.is()
ES5 比较两个值是否相等,只有两个运算符:相等运算符()和严格相等运算符(=)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。
console.log(Object.is(NaN , NaN)); //true
console.log(Object.is(+0 , -0)); //false
比较的时候比较的仍然是对象是否是同一个对象。
var arr1 = [1,2,3];
var arr2 = [1,2,3];
console.log(Object.is(arr1 , arr2)); //false
因为arr1和arr2在内存中是两个不同的数组。
5 Object.assign
Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
var obj1 = {"a" :1 , "b" : 2 , "c" : 3};
var obj2 = {"b" :4 , "c" : 5 , "d" : 6};
var obj3 = {"c" :7 , "d" : 8 , "e" : 9};
Object.assign(obj1 , obj2 , obj2);
console.log(obj1);
注意Object.assign()可以有无限个参数,但是只会更改第一个参数对象。
6 对象中键加方括号 - 动态键
当对象的键名是一个变量的时候,在{}的里面,可以写[]包裹这个变量成为键名。
var sex ="男";
if(sex == "男"){
var k = "feihuoliang";
}else{
var k = "xiongwei";
}
var obj = {
"name" : "小明",
"sex" : sex,
[k] : 130//动态键,表示它取自外部的属性
}
console.log(obj);