1.属性简单写法
允许在大括号里直接写入变量和函数作为对象的属性和方法 作为对象的属性和方法
用法:
1.简写方式
var foo = "bar";
var baz = { foo };
baz; // { foo: "baz" }
// 等价于
var baz = { foo: foo };
var obj = {
method() { return "yuan is an animal"; }
}
// 等价于
var obj = {
method: function() { return "yuan is an animal";}
}
1.方便用于函数返回值
eg:
getpoint(){
var x=1,y=2,
return {x,y};
}
this.getpoint();//{x:1,y:2}
2.方便于commin.js模块系统规范,输出一组变量
module.exports初始化值为 { }
getItem(){ return 1};
module.exports={getItem:getItem} == module.exports={getItem}
注意:在简写对象方法中不能使用箭头函数和构造函数
2.属性名表达方式
有两种方式:1.标识符作为属性名,2.表达式作为属性名(es6新增)
1.标识符作为属性名
obj.foo = true;
2.表达式作为属性名
obj["foo"] = true;
例子:
let animal = {
"type": "animal",
[yuan]: "搜索"
}
animal["type"]; // "animal"
animal[yuan]; // "搜索"
3.方法的name 属性 函数的name属性,返回函数名字
let mon = {
['yuan']() {
return "s";
}
}
mon.yuan.name; // "yuan"
4.Object.is():比较值相等
Object.is()用来比较两个值是否严格相等,与===基本一致
用法:
Object.is(a,b)
注意:Object.is()对于+0, -0为false,对于NaN为true
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
+0 === -0 //true
NaN === NaN // false
5.Object.assign():对象合并
Object.assign方法用来将源对象复制到目标对象,实际是浅拷贝。
语法:Object.assign(对象1,对象2,对象3}; 至少两个参数
1.复制一个对象
const obj={a;1};
const obj1=Object.assign({}.obj};
2.合并对象 合并相同属性的,后面覆盖前面的 const a={b:1}; const b={b:1}; const obj1=Object.assign(a,b);
注意:如果有同名属性,则后面会覆盖前面的。
6.Object.keys():返回一个数组,对象的键名
用法:Object.keys( a) ;
Object.keys():返回一个数组,对象的键名
Object.values():返回一个数组,对象的值
Object.entries():返回一个数组,可以将对象转为真正的Map数据结构
Object.fromEntries():是Object.entries()的逆操作,用于将一个键值对数组转为对象。
1.Object.keys(): var p={a:1,b:2,c:3} console.log(Object.keys(p)) //["a", "b", "c"]
2.Object.values(): var p={a:1,b:2,c:3} console.log(Object.values(p)) //[1,2,3]
3.Object.entries(): var p={a:1,b:2,c:3} console.log(Object.entries(p)) //[[a,1],[b,2],[c,3]]
4.Object.fromEntries():
Object.fromEntries([ ['foo', 'bar'],
['baz', 42]
])
// { foo: "bar", baz: 42 }
7.对象的扩展运算符 ... 作用:
1.快速复制一个对象
var pjson={name:"sss",age:'18"},
var pjson1={...pjson};
2.用在解构赋值中
var {x,y,...z}={x:1,y:1,a;3,b:4};
console.log(x,y,z)// x=1,y=2,z={a:3,b:4}
8.链判断运算符 ?.
用法:
obj?.prop // 对象属性
obj?.[expr] // 同上
func?.(...args) // 函数或对象方法的调用
a?.b 等同于 a == null ? undefined : a.b
a?.[x] 等同于 a == null ? undefined : a[x] a?.b() 等同于 a == null ? undefined : a.b()
a?.() 等同于 a == null ? undefined : a()
注意:如果a.b()不是函数要报错