属性的简写
当对象键名与对应值名相等的时候,可以进行简写- let a={boo:boo}
- 等同于
- let a={boo}
复制代码 方法也能够进行简写- let a={
- method:function() {
- console.log(1);
- },
- }
- 等同于
- a.method()
- let a={
- method(){
- console.log(1);
- }
- }
- a.method()
复制代码 注意:简写的对象方法不能用作构造函数,否则会报错
属性名表达式
允许字面量定义对象时,将表达式放在括号内- let c='asd'
- let a={'b':1,[c]:2}
- console.log(a['b']);//1
- console.log(a[c]);//2
- console.log(a['asd']);//2
复制代码 super关键字
this关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super,指向当前对象的原型对象- const proto = {
- foo: 'hello'
- };
- const obj = {
- foo: 'world',
- find() {
- return super.foo;
- }
- };
- Object.setPrototypeOf(obj, proto); // 为obj设置原型对象
- obj.find() // "hello"
复制代码 扩展运算符
解构赋值是浅拷贝- let obj = { a: { b: 1 } };
- let { ...x } = obj;
- obj.a.b = 2; // 修改obj里面a属性中键值
- x.a.b // 2,影响到了结构出来x的值
复制代码 属性的遍历
ES6 一共有 5 种方法可以遍历对象的属性。
- for...in:循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)
- Object.keys(obj):返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名
- Object.getOwnPropertyNames(obj):回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名
- Object.getOwnPropertySymbols(obj):返回一个数组,包含对象自身的所有 Symbol 属性的键名
- Reflect.ownKeys(obj):返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举
上述遍历,都遵守同样的属性遍历的次序规则:
- 首先遍历所有数值键,按照数值升序排列
- 其次遍历所有字符串键,按照加入时间升序排列
- 最后遍历所有 Symbol 键,按照加入时间升序排
对象新增的方法
关于对象新增的方法,分别有以下:
- Object.is()
- Object.assign()
- Object.getOwnPropertyDescriptors()
- Object.setPrototypeOf(),Object.getPrototypeOf()
- Object.keys(),Object.values(),Object.entries()
- Object.fromEntries()
Object.is()
严格判断两个值是否相等,与严格比较运算符(===)的行为基本一致,不同之处只有两个:一是+0不等于-0,二是NaN等于自身- +0 === -0 //true
- NaN === NaN // false
- Object.is(+0, -0) // false
- Object.is(NaN, NaN) // true
复制代码 Object.assign()
Object.assign()方法用于对象的合并,将源对象source的所有可枚举属性,复制到目标对象target
Object.assign()方法的第一个参数是目标对象,后面的参数都是源对象- const target = { a: 1, b: 1 };
- const source1 = { b: 2, c: 2 };
- const source2 = { c: 3 };
- Object.assign(target, source1, source2);
- target // {a:1, b:2, c:3}
复制代码 注意:Object.assign()方法是浅拷贝,遇到同名属性会进行替换
Object.setPrototypeOf()
Object.setPrototypeOf方法用来设置一个对象的原型对象- Object.setPrototypeOf(object, prototype)
- // 用法
- const o = Object.setPrototypeOf({}, null);
复制代码 Object.getPrototypeOf()
用于读取一个对象的原型对象- Object.getPrototypeOf(obj);
复制代码 Object.keys()
返回自身的(不含继承的)所有可遍历(enumerable)属性的键名的数组- var obj = { foo: 'bar', baz: 42 };
- Object.keys(obj)
- // ["foo", "baz"]
复制代码 Object.values()
返回自身的(不含继承的)所有可遍历(enumerable)属性的键对应值的数组- const obj = { foo: 'bar', baz: 42 };
- Object.values(obj)
- // ["bar", 42]
复制代码 Object.entries()
返回一个对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对的数组- const obj = { foo: 'bar', baz: 42 };
- Object.entries(obj)
- // [ ["foo", "bar"], ["baz", 42] ]
复制代码 Object.fromEntries()
用于将一个键值对数组转为对象- Object.fromEntries([
- ['foo', 'bar'],
- ['baz', 42]
- ])
- // { foo: "bar", baz: 42 }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |