简洁标表示法
{// 简洁标表示法let o = 1;let k = 2;let es5 = {o: o,k: k,};let es6 = {o,k,};console.log(es5, es6); // { o: 1, k: 2 } { o: 1, k: 2 }let es5_method = {hello: function () {console.log("hello"); // hello},};let es6_method = {hello() {console.log("hello"); // hello},};console.log(es5_method.hello(), es6_method.hello()); // undefined undefined}
属性表达式
在 ES6 可以直接用变量或者表达式来定义 Object 的 key
{// 属性表达式let a = "b";let es5_obj = {a: "c",b: "c",};let es6_obj = {[a]: "c",};console.log(es5_obj, es6_obj); // { a: 'c', b: 'c' } { b: 'c' }}
Object.is()
判断两个对象是否相等
{// 新增APIconsole.log("字符串", Object.is("abc", "abc"), "abc" === "abc"); //字符串 true trueconsole.log("数组", Object.is([], []), [] === []); // 数组 false falseconsole.log("拷贝", Object.assign({ a: "a" }, { b: "b" })); // 拷贝 { a: 'a', b: 'b' }let test = { k: 123, o: 456 };for (let [key, value] of Object.entries(test)) {console.log([key, value]);// [ 'k', 123 ]// [ 'o', 456 ]}}
扩展运算符 & Object.assign()
Object.assign 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
注意: Object.assign 不会在那些source对象值为 null 或 undefined 的时候抛出错误。
{// 扩展运算符let { a, b, ...c } = { a: "text", b: "kill", c: "ddd", d: "ccc" };console.log(c); // { c: 'ddd', d: 'ccc' }}{const target = { a: 1, b: 2 };const source = { b: 4, c: 5 };const returnedTarget = Object.assign(target, source);console.log(target);// { a: 1, b: 4, c: 5 }console.log(returnedTarget);// { a: 1, b: 4, c: 5 }}
对象的遍历方式
const data = {name: "wcd",joy: "fe",};{for (let key in data) {console.log(key, data[key]);}// name wcd// joy fe}{Object.keys(data).forEach((key) => {console.log(key, data[key]);});// name wcd// joy fe}{Object.getOwnPropertyNames(data).forEach((key) => {console.log(key, data[key]);});// name wcd// joy fe}{Reflect.ownKeys(data).forEach((key) => {console.log(key, data[key]);});// name wcd// joy fe}
