找回密碼
 立即註冊
查看: 1784|回復: 9

JS : Object Destructuring

[複製鏈接]

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

發表於 2021-11-17 17:08:26 | 顯示全部樓層 |閱讀模式
原本:
  1. const profile = {
  2.   firstName: "Oluwatobi",
  3.   lastName: "Sofela",
  4.   website: "yahoo.com"
  5. };

  6. const firstName = profile.firstName;
  7. const lastName = profile.lastName;
  8. const website = profile.website;

  9. console.log(firstName); // "Oluwatobi"
  10. console.log(lastName); // "Sofela"
  11. console.log(website); // "yahoo.com"
複製代碼
Object Destructuring :
  1. const profile = {
  2.   firstName: "Oluwatobi",
  3.   lastName: "Sofela",
  4.   website: "yahoo.com"
  5. };

  6. const { firstName: firstName, lastName: lastName, website: website } = profile;

  7. console.log(firstName); // "Oluwatobi"
  8. console.log(lastName); // "Sofela"
  9. console.log(website); // "yahoo.com"
複製代碼


[發帖際遇]: 一個袋子砸在了 admin 頭上,admin 賺了 4 金錢. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 17:10:19 | 顯示全部樓層
簡化:
  1. const profile = {
  2.   firstName: "Oluwatobi",
  3.   lastName: "Sofela",
  4.   website: "yahoo.com"
  5. };

  6. const { firstName, lastName, website } = profile;

  7. console.log(firstName); // "Oluwatobi"
  8. console.log(lastName); // "Sofela"
  9. console.log(website); // "yahoo.com"
複製代碼


[發帖際遇]: 一個袋子砸在了 admin 頭上,admin 賺了 2 金錢. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 17:13:10 | 顯示全部樓層
How to Use Object Destructuring When the Property’s Name Differs from That of the Variable
  1. const profile = {
  2.   firstName: "Oluwatobi",
  3.   lastName: "Sofela",
  4.   website: "yahoo.com"
  5. };

  6. const { firstName: forename, lastName: surname, website: onlineSite } = profile;

  7. console.log(forename); // "Oluwatobi"
  8. console.log(surname); // "Sofela"
  9. console.log(onlineSite); // "yahoo.com"
  10. console.log(website); // "ReferenceError: website is not defined"
複製代碼
注意最後兩個 console.log 的差別。
[發帖際遇]: admin 樂于助人,獎勵 2 貢獻. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 17:16:05 | 顯示全部樓層
再一個例子:
  1. const profile = {
  2.   lastName: { familyName: "Sofela" }
  3. };

  4. const { lastName: { familyName: surname } } = profile;

  5. console.log(surname); // "Sofela"
複製代碼


[發帖際遇]: 一個袋子砸在了 admin 頭上,admin 賺了 4 金錢. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 17:17:33 | 顯示全部樓層
How to Do Direct Object Destructuring
  1. const { firstName, lastName, website } = {
  2.   firstName: "Oluwatobi",
  3.   lastName: "Sofela",
  4.   website: "yahoo.com"
  5. };

  6. console.log(firstName); // "Oluwatobi"
  7. console.log(lastName); // "Sofela"
  8. console.log(website); // "yahoo.com"
複製代碼


[發帖際遇]: 一個袋子砸在了 admin 頭上,admin 賺了 4 金錢. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 17:24:10 | 顯示全部樓層
How to Use Object Destructuring While Separating Variable Declarations from Their Assignments
  1. // Declare three variables:
  2. let firstName, lastName, website;

  3. // Extract values to the three variables above:
  4. ({ firstName, lastName, website } = {
  5.   firstName: "Oluwatobi",
  6.   lastName: "Sofela",
  7.   website: "yahoo.com"
  8. });

  9. // Invoke the three variables:
  10. console.log(firstName); // "Oluwatobi"
  11. console.log(lastName); // "Sofela"
  12. console.log(website); // "yahoo.com"
複製代碼
注意:Make sure that you encase the object destructuring assignment in parentheses. By so doing, the computer will know that the object destructuring is an object literal, not a block.
[發帖際遇]: 一個袋子砸在了 admin 頭上,admin 賺了 5 金錢. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 17:29:36 | 顯示全部樓層
How to Use Object Destructuring to Assign the Rest of an Object to a Variable
  1. const { firstName, ...otherInfo } = {
  2.   firstName: "Oluwatobi",
  3.   lastName: "Sofela",
  4.   website: "yahoo.com"
  5. };

  6. console.log(firstName); // "Oluwatobi"
  7. console.log(otherInfo); // {lastName: "Sofela", website: "yahoo.com"}
複製代碼


[發帖際遇]: admin 發帖時在路邊撿到 4 金錢,偷偷放進了口袋. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 17:32:50 | 顯示全部樓層
預設:
  1. const { firstName = "Tobi", website = "Yahoo" } = {
  2.   firstName: "Oluwatobi"
  3. };

  4. console.log(firstName); // "Oluwatobi"
  5. console.log(website); // "Yahoo"
複製代碼


[發帖際遇]: 一個袋子砸在了 admin 頭上,admin 賺了 1 金錢. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 18:41:33 | 顯示全部樓層
Swap 互換:
  1. let firstName = "Oluwatobi";
  2. let website = "Yahoo";

  3. ({ firstName, website } = {firstName: website, website: firstName});

  4. console.log(firstName); // "Yahoo"
  5. console.log(website); // "Oluwatobi"
複製代碼


[發帖際遇]: admin 樂于助人,獎勵 9 貢獻. 幸運榜 / 衰神榜

934

主題

649

回帖

3萬

積分

管理員

論壇管理員

積分
39487

最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

 樓主| 發表於 2021-11-17 18:45:33 | 顯示全部樓層
How to Use Object Destructuring to Extract Values from Properties to a Function’s Parameters
  1. // Define an object with two properties:
  2. const profile = {
  3.   firstName: "Oluwatobi",
  4.   lastName: "Sofela",
  5. };

  6. // Define a function with one destructuring object containing two parameters:
  7. function getUserBio({ firstName, lastName }) {
  8.   return `My name is ${firstName} ${lastName}.`;
  9. }

  10. // Invoke getUserBio while passing the profile object as an argument:
  11. getUserBio(profile);

  12. // The invocation above will return:
  13. "My name is Oluwatobi Sofela."
複製代碼


[發帖際遇]: admin 樂于助人,獎勵 2 貢獻. 幸運榜 / 衰神榜
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|DD論壇 維護: Redd Design

GMT+8, 2024-9-8 08:47 , Processed in 0.364883 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表