简洁标表示法

  1. {
  2. // 简洁标表示法
  3. let o = 1;
  4. let k = 2;
  5. let es5 = {
  6. o: o,
  7. k: k,
  8. };
  9. let es6 = {
  10. o,
  11. k,
  12. };
  13. console.log(es5, es6); // { o: 1, k: 2 } { o: 1, k: 2 }
  14. let es5_method = {
  15. hello: function () {
  16. console.log("hello"); // hello
  17. },
  18. };
  19. let es6_method = {
  20. hello() {
  21. console.log("hello"); // hello
  22. },
  23. };
  24. console.log(es5_method.hello(), es6_method.hello()); // undefined undefined
  25. }

属性表达式

在 ES6 可以直接用变量或者表达式来定义 Object 的 key

  1. {
  2. // 属性表达式
  3. let a = "b";
  4. let es5_obj = {
  5. a: "c",
  6. b: "c",
  7. };
  8. let es6_obj = {
  9. [a]: "c",
  10. };
  11. console.log(es5_obj, es6_obj); // { a: 'c', b: 'c' } { b: 'c' }
  12. }

Object.is()

判断两个对象是否相等

  1. {
  2. // 新增API
  3. console.log("字符串", Object.is("abc", "abc"), "abc" === "abc"); //字符串 true true
  4. console.log("数组", Object.is([], []), [] === []); // 数组 false false
  5. console.log("拷贝", Object.assign({ a: "a" }, { b: "b" })); // 拷贝 { a: 'a', b: 'b' }
  6. let test = { k: 123, o: 456 };
  7. for (let [key, value] of Object.entries(test)) {
  8. console.log([key, value]);
  9. // [ 'k', 123 ]
  10. // [ 'o', 456 ]
  11. }
  12. }

扩展运算符 & Object.assign()

Object.assign 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
注意: Object.assign 不会在那些source对象值为 null 或 undefined 的时候抛出错误。

  1. {
  2. // 扩展运算符
  3. let { a, b, ...c } = { a: "text", b: "kill", c: "ddd", d: "ccc" };
  4. console.log(c); // { c: 'ddd', d: 'ccc' }
  5. }
  6. {
  7. const target = { a: 1, b: 2 };
  8. const source = { b: 4, c: 5 };
  9. const returnedTarget = Object.assign(target, source);
  10. console.log(target);
  11. // { a: 1, b: 4, c: 5 }
  12. console.log(returnedTarget);
  13. // { a: 1, b: 4, c: 5 }
  14. }

对象的遍历方式

  1. const data = {
  2. name: "wcd",
  3. joy: "fe",
  4. };
  5. {
  6. for (let key in data) {
  7. console.log(key, data[key]);
  8. }
  9. // name wcd
  10. // joy fe
  11. }
  12. {
  13. Object.keys(data).forEach((key) => {
  14. console.log(key, data[key]);
  15. });
  16. // name wcd
  17. // joy fe
  18. }
  19. {
  20. Object.getOwnPropertyNames(data).forEach((key) => {
  21. console.log(key, data[key]);
  22. });
  23. // name wcd
  24. // joy fe
  25. }
  26. {
  27. Reflect.ownKeys(data).forEach((key) => {
  28. console.log(key, data[key]);
  29. });
  30. // name wcd
  31. // joy fe
  32. }