ES6中觉得比较特别简洁的写法,可以直接写入变量和函数
var foo = 'bar';
var baz = {foo};
baz // {foo: "bar"}
// 等同于
var baz = {foo: foo};
function f(x, y) {
return {x, y};
}
// 等同于
function f(x, y) {
return {x: x, y: y};
}
Object的方法
Object.is():
用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
Object.assign()
用于对象的合并,将源对象的所有课枚举属性复制到目标对象。
这个方法是浅拷贝,不是深拷贝
这个也可以用来处理数组,但是会把数组视为对象
Object.assign([1, 2, 3], [4, 5])//// [4, 5, 3]
他的基本用法是
给对象添加属性
为对象添加方法
克隆对象
合并多个对象
为属性指定默认值
属性的可枚举性
Object.getOwnPropertyDescriptor: 这个方法可以用来获取该属性的描述对象。
属性的遍历
1.for..in 遍历对象自身的和可继承的可枚举属性(不含Symbol属性)
2.Object.keys(obj),返回一个数组,包括对象自身的(不含继承的)所有课枚举属性(不含Symbol属性)
3.Object.getOwnPropertyNames(obj):返回一个数组,包含对象自身的所有属性(不含Symbol,但是包括不可枚举属性)
4.Object.getOwnPropertySymbols(obj),返回一个数组,包含对象自身的所有Symbol属性
5.Reflect.ownKeys(obj): 返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或者字符串,也不管是否可枚举
这5中方法都遍历对象的属性,都遵从同样的属性遍历的次序规则
首先遍历所有属性名为数值的属性,按照数字排序
其次遍历所有属性名为字符串的属性,按照生成时间排序
最后遍历属性名为Symbol值的属性,按照生成时间排序
Object.getPrototypeOf()
Object.keys()
Object.values()
Object.entries(): 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值对数组
var obj = { foo: 'bar', baz: 42 };
Object.entries(obj)
// [ ["foo", "bar"], ["baz", 42] ]
对象的扩展运算符的应用
1.解构赋值
const [a, ...b] = [1, 2, 3];
a // 1
b // [2, 3]
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x // 1
y // 2
z // { a: 3, b: 4 }
2.遍历对象的所有可遍历属性
let z = { a: 3, b: 4 };
let n = { ...z };
n // { a: 3, b: 4 }
let ab = { ...a, ...b };
// 等同于
let ab = Object.assign({}, a, b);
Object.getOwnPropertyDescriptors()
ES5中有一个Object.getOwnPropertyDescriptor,返回某个对象属性的描述对象,而getOwnPropertyDescriptors返回指定对象所有自身属性(非继承属性)的描述对象。
//TODO: Object的所有方法整理es5新增的方法
// 扩展运算符的整理
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。