国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何在JavaScript中使用對象的方法

開發 前端
JavaScript 中,對象是 鍵/值 對的集合。值可以包含屬性和方法,并且可以包含所有其他 JavaScript 數據類型,例如字符串,數字和布爾值。本教程將介紹重要的內置對象方法,下面的每個部分都涉及特定方法并提供使用示例。

 [[263331]]

介紹

JavaScript 中,對象是 鍵/值 對的集合。值可以包含屬性和方法,并且可以包含所有其他 JavaScript 數據類型,例如字符串,數字和布爾值。

JavaScript中的所有對象都來自父 Object 的構造函數。Object 為我們提供了很多實用的內置方法,并且可以在單個對象中直接使用。不同于 數組的原型方法 例如 sort() 和 reverse() 只能被數組實例使用,對象方法直接來自 Object 構造函數,并使用對象實例作為參數。這稱為靜態方法。

本教程將介紹重要的內置對象方法,下面的每個部分都涉及特定方法并提供使用示例。

前提

為了充分利用本教程,您應該熟悉創建,修改和使用對象,您可以在“ 了解JavaScript中的對象 ”一文中查看這些對象。

有關JavaScript的其他指導,您可以查看“ JavaScript 如何編碼 ”系列。

Object.create()

Object.create() 方法用于創建一個新對象,并將其鏈接到現有的對象原型。

我們可以創建一個job對象實例,并將其擴展為更具體的對象。 

  1. // Initialize an object with properties and methods  
  2. const job = {  
  3. position: 'cashier',  
  4. type: 'hourly',  
  5. isAvailable: true,  
  6. showDetails() {  
  7. const accepting = this.isAvailable ? 'is accepting applications' : "is not currently accepting applications";  
  8. console.log(`The ${this.position} position is ${this.type} and ${accepting}.`);  
  9.  
  10. };  
  11. // Use Object.create to pass properties  
  12. const barista = Object.create(job);  
  13. barista.position = "barista" 
  14. barista.showDetails();  
  1. Output  
  2. The barista position is hourly and is accepting applications.  

barista 對象現在有一個 position 屬性 - 但是所有其他屬性和方法都可以通過 job 的原型獲得。通過Object.create()來實現最小化重復,對于保持代碼DRY十分有效。

Object.keys()

Object.keys() 會創建一個包含對象鍵的數組。

我們可以創建一個對象并打印鍵的數組。 

  1. // Initialize an object  
  2. const employees = {  
  3. boss: 'Michael',  
  4. secretary: 'Pam',  
  5. sales: 'Jim',  
  6. accountant: 'Oscar'  
  7. };  
  8. // Get the keys of the object  
  9. const keys = Object.keys(employees);  
  10. console.log(keys);  
  1. Output  
  2. ["boss", "secretary", "sales", "accountant"]  

Object.keys() 還可用于迭代對象的鍵和值。 

  1. // Iterate through the keys  
  2. Object.keys(employees).forEach(key => {  
  3. let value = employees[key];  
  4. console.log(`${key}: ${value}`);  
  5. });  
  1. Output  
  2. boss: Michael  
  3. secretary: Pam  
  4. sales: Jim  
  5. accountant: Oscar  

for-in 循環和Object.keys()返回的可枚舉屬性有一個區別:

for-in 循環同時也會遍歷原型屬性

Object.keys() 只會返回自有(實例)屬性

Object.keys() 對于檢查對象的長度也很有用。 

  1. // Get the length of the keys  
  2. const length = Object.keys(employees).length;  
  3. console.log(length);  
  1. Output  
  2.  

使用該 length 屬性,我們能夠計算employees包含4個自有屬性。

Object.values()

Object.values() 創建一個包含對象值的數組。 

  1. // Initialize an object  
  2. const session = {  
  3. id: 1,  
  4. time: `26-July-2018`,  
  5. device: 'mobile',  
  6. browser: 'Chrome'  
  7. };  
  8. // Get all values of the object  
  9. const values = Object.values(session);  
  10. console.log(values);  
  1. Output  
  2. [1, "26-July-2018", "mobile", "Chrome"]  

Object.keys()和Object.values()允許您從對象返回數據。

Object.entries()

Object.entries() 創建對象的鍵/值對的嵌套數組。 

  1. // Initialize an object  
  2. const operatingSystem = {  
  3. name: 'Ubuntu',  
  4. version: 18.04,  
  5. license: 'Open Source'  
  6. };  
  7. // Get the object key/value pairs  
  8. const entries = Object.entries(operatingSystem);  
  9. console.log(entries);  
  1. Output  
  2.  
  3. ["name", "Ubuntu"]  
  4. ["version", 18.04]  
  5. ["license", "Open Source"]  
  6.  

一旦我們有了鍵/值對數組,我們就可以使用該forEach()方法循環并處理結果。 

  1. // Loop through the results  
  2. entries.forEach(entry => {  
  3. const [key, value] = entry;  
  4. console.log(`${key}: ${value}`);  
  5. });  
  1. Output  
  2. name: Ubuntu  
  3. version: 18.04  
  4. license: Open Source  

Object.entries() 方法僅返回對象實例自己的屬性,而不返回可通過其原型繼承的任何屬性。

Object.assign()

Object.assign() 用于把一個對象的值復制到另一個對象。

我們可以創建兩個對象,使用Object.assign()方法將它們合并。 

  1. // Initialize an object  
  2. const name = {  
  3. firstName: 'Philip',  
  4. lastName: 'Fry'  
  5. };  
  6. // Initialize another object  
  7. const details = {  
  8. job: 'Delivery Boy',  
  9. employer: 'Planet Express'  
  10. };  
  11. // Merge the objects  
  12. const character = Object.assign(name, details);  
  13. console.log(character);  
  1. Output  
  2. {firstName: "Philip", lastName: "Fry", job: "Delivery Boy", employer: "Planet Express"}  

也可以使用展開語法(Spread syntax)來完成相同的任務。在下面的代碼中,我們將通過展開語法合并name和details對象,來聲明character對象。 

  1. // Initialize an object  
  2. const name = {  
  3. firstName: 'Philip',  
  4. lastName: 'Fry'  
  5. };  
  6. // Initialize another object  
  7. const details = {  
  8. job: 'Delivery Boy',  
  9. employer: 'Planet Express'  
  10. };  
  11. // Merge the object with the spread operator  
  12. const character = {...name, ...details}  
  13. console.log(character);  
  1. Output  
  2. {firstName: "Philip", lastName: "Fry", job: "Delivery Boy", employer: "Planet Express"} 

展開語法(Spread syntax) 在對象語法中也成為淺層克隆(shallow-cloning)。

Object.freeze()

Object.freeze() 防止修改對象的屬性和值,并防止在對象中添加或刪除屬性。 

  1. // Initialize an object  
  2. const user = {  
  3. username: 'AzureDiamond',  
  4. password: 'hunter2'  
  5. };  
  6. // Freeze the object  
  7. const newUser = Object.freeze(user);  
  8. newUser.password = '*******' 
  9. newUser.active = true 
  10. console.log(newUser);  
  1. Output  
  2. {username: "AzureDiamond", password: "hunter2"}  

在上面的例子中,我們試圖重寫密碼用*******覆蓋hunter2,但password的值能保持不變。我們還嘗試添加一個新屬性active,但沒有添加。

Object.isFrozen() 可用于確定對象是否已凍結,并返回布爾值。

Object.seal()

Object.seal()阻止將新屬性添加到對象,但允許修改現有屬性。這種方法類似于Object.freeze()。在實現下面的代碼之前刷新控制臺以避免錯誤。 

  1. // Initialize an object  
  2. const user = {  
  3. username: 'AzureDiamond',  
  4. password: 'hunter2'  
  5. };  
  6. // Seal the object  
  7. const newUser = Object.seal(user);  
  8. newUser.password = '*******' 
  9. newUser.active = true 
  10. console.log(newUser);  
  1. Output  
  2. {username: "AzureDiamond", password: "*******"}  

新active屬性未添加到密封對象,但password屬性已成功更改。

Object.isSealed() 可用于確定對象是否已封閉,并返回布爾值。

Object.getPrototypeOf()

Object.getPrototypeOf()用于獲取[[Prototype]]對象的內部隱藏,也可通過 __proto__ 屬性訪問。

在這個例子中,我們可以創建一個可以訪問Array原型的數組。 

  1. const employees = ['Ron', 'April', 'Andy', 'Leslie'];  
  2. Object.getPrototypeOf(employees);  
  1. Output  
  2. [constructor: ƒ, concat: ƒ, find: ƒ, findIndex: ƒ, pop: ƒ, …]  

我們可以在該原型輸出中看到employees數組訪問pop,find以及其他數組原型方法。我們可以通過測試employees原型來證實這一點Array.prototype。 

  1. Object.getPrototypeOf(employees) === Array.prototype;  
  1. Output  
  2. true  

此方法可用于獲取有關對象的更多信息或確保它可以訪問另一個對象的原型。

還有一種相關Object.setPrototypeOf()方法將一個原型添加到另一個對象。建議您使用Object.create(), 因為它更快,性能更高。

結論

對象有許多有用的方法可以幫助我們修改,保護和迭代它們。在本教程中,我們回顧了如何創建和分配新對象,迭代對象的鍵和/或值,以及凍結或密封對象。

如果您需要查看JavaScript對象,可以閱讀“了解 JavaScript中的對象” 。如果您想熟悉原型鏈,可以查看“ 了解JavaScript中的原型和繼承”。

責任編輯:龐桂玉 來源: senmentfault
相關推薦

2023-03-05 19:28:11

JavaScripCSS

2023-01-28 17:41:07

Java代碼

2025-01-20 08:40:00

Python對象

2022-06-23 08:00:53

PythonDateTime模塊

2021-06-09 09:36:18

DjangoElasticSearLinux

2022-05-17 08:25:10

TypeScript接口前端

2021-03-09 07:27:40

Kafka開源分布式

2011-08-10 09:31:41

Hibernateunion

2015-08-27 09:46:09

swiftAFNetworkin

2024-01-18 08:37:33

socketasyncio線程

2021-01-28 05:14:40

C#接口簽名

2019-09-16 19:00:48

Linux變量

2014-07-02 09:47:06

SwiftCocoaPods

2024-09-06 11:34:15

RustAI語言

2020-11-30 11:55:07

Docker命令Linux

2020-04-09 10:18:51

Bash循環Linux

2022-10-25 09:07:28

Linuxxargs命令

2015-11-26 10:57:56

DockerOpen vSwitc

2023-12-01 09:18:27

AxiosAxios 庫

2021-09-10 10:30:22

Java代碼
點贊
收藏

51CTO技術棧公眾號

国产视频精品在线| 偷拍视屏一区| 国产福利一区二区三区在线视频| 亚洲精品国精品久久99热一 | 视频成人永久免费视频| 色婷婷精品大视频在线蜜桃视频| 日韩a级黄色片| 午夜精品久久99蜜桃的功能介绍| 最新国产精品久久精品| 2019日韩中文字幕mv| 亚洲天堂免费| 国产999视频| 亚洲69av| 欧美二区乱c黑人| 99re6在线精品视频免费播放| 欧美日韩国产激情| 成人免费网址在线| 最新不卡av在线| 男人j桶女人的网站| 成人亚洲精品久久久久软件| 久久视频在线观看中文字幕| 成人激情视频| 91在线无精精品一区二区| 亚洲人体影院| 日韩中文字幕欧美| 三上悠亚激情av一区二区三区 | 好吊妞无缓冲视频观看| 亚洲深夜激情| 国产美女久久精品| 亚洲人metart人体| 亚洲综合自拍一区| 亚洲精品国产成人影院| 国产精品久久久久不卡| 精品一区三区| 亚洲精品综合精品自拍| 日本高清久久| 亚洲一区二区免费在线| 综合av在线| 欧美少妇在线观看| 91美女在线视频| jizzjizzxxxx| 亚洲一区二区三区四区的 | 奇米777国产一区国产二区| 一区二区日韩精品| 欧美美女在线观看| 免费在线成人av电影| 国产精品18久久久久| 成人影院在线观看视频| 亚洲高清久久久| 色老头视频在线观看| 精品自在线视频| 国产精品久久国产愉拍| 99热在线观看| 日韩成人久久久| 精品国产乱码久久久久久蜜坠欲下| 欧美精品123| 国产女主播一区| 毛片在线视频| 欧美在线一区二区三区四| 亚洲综合精品| 少妇无码av无码专区在线观看| 精品久久久中文| 福利一区二区| 日韩精品久久久毛片一区二区| 久久久精品黄色| 一本色道久久加勒比88综合| 亚洲一级黄色av| 日本一区精品视频| 九色自拍视频在线观看| 精品久久国产97色综合| 男人天堂视频在线观看| 欧美精品一区二区三区在线看午夜 | 国产69精品久久久久777| 在线黄色av| 欧美一区二区三区免费视| 波多野结衣在线aⅴ中文字幕不卡| 中文字幕免费在线观看| 欧美孕妇性xx| 91免费在线看| 亚洲少妇视频| 亚洲人体一区| 亚洲国产精品久久久久秋霞不卡| 久久久久久黄| 福利在线播放| 国产在线精品播放| 色菇凉天天综合网| 亚洲激情精品| 成年人免费网站| 欧美精品中文字幕一区| www.在线成人| 日韩黄色碟片| 国产理论片免费观看| 国产精品久久久久久久电影| 亚洲二区精品| 嫩草嫩草嫩草| 欧美在线观看视频| 亚洲最色的网站| 国内亚洲精品| 在线午夜影院| 2022中文字幕| 欧美国产视频日韩| 富二代精品短视频| 91久久在线| 精精国产xxx在线视频app| 中文字幕制服丝袜在线| 久久精品免费电影| 亚洲国产成人精品视频| 首页国产欧美日韩丝袜| 中文字幕成人| 飘雪影院手机免费高清版在线观看 | 亚洲欧美视频在线观看视频| 免费看日产一区二区三区| av五月婷婷| 亚洲激情电影在线| 日本欧美黄网站| 日韩精品久久久久久福利| 日韩美女啊v在线免费观看| 高清精品视频| 很黄的网站在线观看| 杨幂毛片午夜性生毛片 | 97视频免费看| 欧美大胆在线视频| 久久久久99精品一区| 国产精品tv| 黄色手机在线视频| 精品国产自在精品国产浪潮| 久久影院亚洲| 国产日韩一区二区在线观看| 欧美日韩国产一二三| 在线不卡视频| 最新中文字幕免费视频| 97精品欧美一区二区三区| 91久久香蕉国产日韩欧美9色| 日韩国产大片| 四虎永久免费网站| dy888亚洲精品一区二区三区| 国产欧美日韩伦理| 久久久视频精品| 精品久久国产老人久久综合| 91理论电影在线观看| 欧美aaaaaaaa牛牛影院| 欧美大片网站| 国产免费永久在线观看| 欧美日韩精品一区| 精品国偷自产在线视频99| 怡红院成人在线| 欧美群妇大交群的观看方式| 久久精品国产秦先生| 久久成人一区| 国产一区日韩一区| 精品国模一区二区三区| 韩国精品视频在线观看| 天堂√在线中文官网在线| 黄色av资源| www.日本少妇| 欧美不卡在线播放| 99超碰麻豆| 国产一区二区精品在线| 精品视频一区在线| 精品欧美一区二区三区久久久| 999国内精品视频在线| 国产精品日韩欧美| 97中文在线| 欧美日韩精品综合| 无码中文字幕色专区| 97国产在线| 日韩伦理在线一区| 欧美日韩午夜电影网| 日韩美女一区二区三区在线观看| 狠狠久久伊人| 国户精品久久久久久久久久久不卡| 日韩专区中文字幕一区二区| 日本不卡中文字幕| 成人免费在线视频| 亚洲精品videosex极品| 狠狠综合久久av一区二区小说| 精品久久久久久久人人人人传媒| 狠狠躁夜夜躁人人爽天天天天97 | 91精品国产全国免费观看| 精品激情国产视频| 国产精品久久av| 在线观看欧美一区| 精品无码av无码免费专区| 国产理论在线播放| 午夜久久中文| 亚洲欧洲一级| 亚洲成人原创| 美女www一区二区| 国产精品午夜久久| 在线观看区一区二| 韩国精品久久久999| 无码av天堂一区二区三区| av基地在线| 成人免费影院| 亚洲综合网站| 欧美理论在线| 日韩欧美在线免费观看| 亚洲精品美女免费| dy888夜精品国产专区| 日韩欧美国产片|