JS對象由淺入深

對象

對象(Object):JavaScript里的一種數據類型(引用類型),也是用于存儲數據的

好處:可以用來詳細的描述某個事物,是用鍵值對形式存儲語義更明了

特點:對象數據是無序的,數組有序的

對象基本使用

對象由屬性和方法組成

對象屬性

數據描述性的信息稱為屬性,如人的姓名、身高、年齡、性別等,一般是名詞性的。

  1. 屬性都是成 對出現的,包括屬性名和值,它們之間使用英文 : 分隔
  2. 多個屬性之間使用英文 , 分隔
  3. 屬性就是依附在對象上的變量(對象外是變量,對象內是屬性)

1. 定義對象屬性

<script>// 對象也是一種數據類型,保存數據同時可以更直觀的描述事物// 1. 定義對象屬性let pig = {sex: '男',age: 18,uname: '李白',}
</script>

2. 訪問對象屬性

聲明對象,并添加了若干屬性后,可以使用 . 獲得對象中屬性對應的值,我稱之為屬性訪問

<script>// 對象也是一種數據類型,保存數據同時可以更直觀的描述事物// 1. 定義對象屬性let pig = {sex: '男',age: 18,uname: '李白',}// 2. 訪問對象屬性  對象.屬性console.log(pig.age)  // 18console.log(pig.uname)  // 李白
</script>
對象方法

數據行為性的信息稱為方法,如跑步、唱歌等,一般是動詞性的,其本質是函數。

  1. 方法是由方法名和函數兩部分構成,它們之間使用 : 分隔
  2. 多個屬性之間使用英文 , 分隔
  3. 方法是依附在對象中的函數(對象外是函數,對象內是方法)

1.定義對象方法

// let fn = function() {}
// 對象方法
// 1. 定義對象方法
let pig = {uname: '李白',sing: function () {console.log('唱歌')},dance: function () {console.log('跳舞')}
}
console.log(pig)

2.調用對象方法

聲明對象,并添加了若干方法后,可以使用 . 調用對象中函數,我稱之為方法調用。

// let fn = function() {}
// 對象方法
// 1. 定義對象方法
let pig = {uname: '李白',sing: function () {console.log('唱歌')},dance: function () {console.log('跳舞')},sum: function (x, y) {  // 2// console.log(x + y)return x + y}
}
console.log(pig)// 2. 調用對象方法
pig.sing() // 唱歌
pig.dance()  // 跳舞// 3. 方法可以傳遞參數也可以有返回值,跟函數使用基本類似
let re = pig.sum(1, 2) // 1 實參
console.log(re)

注:無論是屬性或是方法,同一個對象中出現名稱一樣的,后面的會覆蓋前面的。

操作對象

對象本質是無序的數據集合, 操作對象數據無非就是 增 刪 改 查

<script>// 操作對象:對數據 查、增、改、刪let pig = {uname: '李白',sing: function () {console.log('唱歌')}}// 1. 查: 對象.屬性 對象.方法
console.log(pig.uname)  // 得到屬性值
pig.sing()// 2. 增:對象.新屬性 = 新值   對象.新方法 = function(){}
pig.age = 4
pig.dance = function () {console.log('輕舟已過萬重山')
}
console.log(pig)// 3. 改:對象.屬性 = 新值  對象.方法 = 新匿名函數
pig.uname = '杜甫'
pig.sing = function () {console.log('一行白鷺上青天')
}
console.log(pig)// 4. 刪: 了解,因為我們很少對對象里面的數據做刪除操作  delete
delete pig.age
delete pig.dance
console.log(pig)
</script>
查找屬性的另外寫法

對于多詞屬性比如中橫線分割的屬性,點操作就不能用了

我們可以采取: 對象[‘屬性’] 方式, 單引號和雙引號都闊以,當然也可以用于其他正常屬性

<script>// 查詢屬性的另外寫法  對象['屬性'] 這個屬性必須加引號let pig = {'pig-name': '李白',age: 118}
// console.log(pig.pig - name)  // NaN
console.log(pig['pig-name']) // 李白
console.log(pig['age']) // 118    === pig.age 
</script>

總結:多詞屬性或者需要解析變量的時候使用 [] 語法,其余的直接使用點語法

遍歷對象

for 遍歷對象的問題:

  • 對象沒有長度length,而且是無序的

所以我們要利用 for in 遍歷對象

語法:

for (let 變量 in 對象) {console.log(變量) // 屬性名console.log(對象[變量]) // 屬性值
}

示例:

<script>// 遍歷對象let pig = {sex: '男',age: 18,uname: '李白',}// for (let key in pig) {
//   console.log(key)  // key 是屬性  
//   console.log(pig[key]) // 對象[變量] 是值
// }for (let key in pig) {console.log(key)  // key 是屬性   對象.屬性// console.log(pig.key)   // pig.key  undefined  因為key是個變量不是屬性// key  'sex'  'age'    對象[key]  對象['sex']  對象['age']console.log(pig[key])
}// 注意:數組遍歷用傳統for, for in 主要用來遍歷對象
let arr = ['red', 'green', 'pink']
for (let k in arr) {console.log(k)// 得到字符串類型的索引號
}
</script>
  1. for in語法中的 k 是一個變量, 在循環的過程中依次代表對象的屬性名
  2. 由于 k 是變量, 所以必須使用 [ ] 語法解析
  3. 一定記住: k 是獲得對象的屬性名, 對象名[k] 是獲得 屬性值
  4. 一般不用這種方式遍歷數組、主要是用來遍歷對象

內置對象

內置對象:JavaScript內部提供的對象,包含各種屬性和方法給開發者調用

回想一下我們曾經使用過的 console.logconsole其實就是 JavaScript 中內置的對象,該對象中存在一個方法叫 log,然后調用 log 這個方法,即 console.log()

除了 console 對象外,JavaScritp 還有其它的內置的對象

Math

Math 是 JavaScript 中內置的對象,稱為數學對象,這個對象下即包含了屬性,也包含了許多的方法。

屬性/方法作用說明
PI圓周率Math.PI 屬性,返回圓周率
max找最大值Math.max(8, 3, 1) 方法,返回 8
min找最小值Math.min(8, 3, 1) 方法,返回 1
abs絕對值Math.abs(-1) 方法,返回 1
ceil向上取整Math.ceil(3.1) 方法,返回 4
floor向下取整Math.floor(3.8) 方法,返回 3
round四舍五入取整Math.round(3.8) 方法,返回 4, 遇到.5則舍入到相鄰的在正無窮(+∞)方向上的整數
<script>// 內置對象Math // 1. PI 屬性 圓周率console.log(Math.PI)// 2. max  方法 找最大值
console.log(Math.max(8, 4, 2)) // 8// 3. min  方法 找最小值
console.log(Math.min(8, 4, 2)) // 2// 4. abs 方法 取絕對值 
console.log(Math.abs(-1))  // 1// 5. ceil 方法 向上取整   ceil 天花板   往大了取
console.log(Math.ceil(1.1)) // 2
console.log(Math.ceil(1.5)) // 2
console.log(Math.ceil(1.8)) // 2
console.log(Math.ceil(-1.1)) //  -1
console.log(Math.ceil(-1.5)) //  -1
console.log(Math.ceil(-1.8)) //  -1// 6. floor 方法 向下取整  floor 地板  往小了取
console.log(Math.floor(1.1)) // 1
console.log(Math.floor(1.5)) // 1
console.log(Math.floor(1.8)) // 1
console.log(Math.floor(-1.1)) //  -2
console.log(Math.floor(-1.5)) //  -2
console.log(Math.floor(-1.8)) //  -2// 7. round 方法 四舍五入取整 
console.log(Math.round(1.1)) // 1
console.log(Math.round(1.5)) // 2
console.log(Math.round(1.8)) // 2
console.log(Math.round(-1.1)) // -1
console.log(Math.round(-1.8)) // -2
console.log(Math.round(-1.5)) // -1
</script>

數學對象提供了比較多的方法,這里不要求強記,通過實際使用對象,加深對對象的理解。

[Math 想了解更多的靜態方法](Math - JavaScript | MDN (mozilla.org))

隨機數 random

lMath.random() 隨機數, 返回一個0 - 1之間,并且包括0不包括1的隨機小數 [0, 1)

如何生成0-10的隨機整數

Math.floor(Math.random() * (10 + 1))

如何生成5-15的隨機整數

Math.floor(Math.random() * (10 + 1)) + 5

如何生成N-M之間的隨機整數

Math.floor(Math.random() * (M - N + 1)) + N
Math.floor(Math.random() * (差值 + 1)) + 最小值
<script>// 1. Math隨機數  Math.random() // 1.1 隨機的小數 0 ~1 之間// 1.2 能取到0,但是取不到1 [0, 1)// console.log(Math.random())
?// 2. 取 0 ~ 10 之間的一個隨機整數// Math.random() * (10 + 1)// (0 ~ 0.99999) * 11// 0 ~ 10.99999// Math.floor(Math.random() * (10 + 1))// console.log(Math.floor(Math.random() * (10 + 1)))
?// 3. 取 5 ~ 15 之間的一個隨機整數// Math.floor(Math.random() * (10 + 1))  0 ~ 10 // Math.floor(Math.random() * (10 + 1)) + 5  5 ~ 15 // console.log(Math.floor(Math.random() * (10 + 1)) + 5)
?// 4. 取 n ~ m 之間的一個隨機整數  4 ~ 12 // Math.floor(Math.random() * (差值 + 1)) + 最小值console.log(Math.floor(Math.random() * (8 + 1)) + 4)
</script>

數據存儲

內存中堆棧空間分配區別:

棧: 優點訪問速度快,基本數據類型存放到棧里面

堆: 優點存儲容量大,引用數據類型存放到堆里面

在這里插入圖片描述

總結:有了變量先給const,如果發現它后面是要被修改的,再改為let

常用術語
術語解釋舉例
關鍵字在JavaScript中有特殊意義的詞匯let、var、function、if、else、switch、case、break
保留字在目前的JavaScript中沒意義,但未來可能會具有特殊意義的詞匯int、short、long、char
標識(標識符)變量名、函數名的另一種叫法
表達式可以被求值的代碼,一般配合運算符出現10 + 3、age >= 18
語句一段可執行的代碼if () for()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20321.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20321.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20321.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模型 FABE(特性 優勢 好處 證據)法則

說明&#xff1a;系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思維模型目錄。特性、優勢、好處、證據&#xff0c;一氣呵成。 1 FABE法則的應用 1.1 FABE法則營銷商用跑步機 一家高端健身器材公司的銷售代表正在向一家新開的健身房推銷他們的商用跑步機。以下…

數控切割編程:探索精密制造的奧秘與挑戰

數控切割編程&#xff1a;探索精密制造的奧秘與挑戰 在現代化制造領域&#xff0c;數控切割編程以其高精度、高效率的特性&#xff0c;成為眾多行業不可或缺的工藝手段。然而&#xff0c;對于初學者或外行人來說&#xff0c;數控切割編程往往顯得神秘且復雜。本文將從四個方面…

【數據分享】中國電力年鑒(2004-2022)

大家好&#xff01;今天我要向大家介紹一份重要的中國電力統計數據資源——《中國電力年鑒》。這份年鑒涵蓋了從2004年到2022年中國電力統計全面數據&#xff0c;并提供限時免費下載。&#xff08;無需分享朋友圈即可獲取&#xff09; 數據介紹 自1993年首次出版以來&#xf…

【數據結構】鏈表與順序表的比較

不同點&#xff1a; 順序表和鏈表是兩種常見的數據結構&#xff0c;他們的不同點在于存儲方式和插入、刪除操作、隨機訪問、cpu緩存利用率等方面。 一、存儲方式不同: 順序表&#xff1a; 順序表的存儲方式是順序存儲&#xff0c;在內存中申請一塊連續的空間&#xff0c;通…

解決OpenCV讀取目標圖像,cv2.imshow出現閃退的問題

前言 本文是該專欄的第17篇,后面將持續分享OpenCV計算機視覺的干貨知識,記得關注。 最近有粉絲朋友詢問到OpenCV讀取目標圖像出現的一個問題,在基于python語言“使用OpenCV讀取目標圖像的時候,利用cv2.imshow函數出現閃退”的情況。 而本文,筆者將詳細介紹針對上述問題,…

【硬件工程師話家常】硬件工程師的項目時間管理

在整個項目研發團隊中&#xff0c;有兩個人和所有人打交道&#xff0c;一個就是項目經理&#xff0c;另一個就是硬件工程師。硬件工程師需要和各種研發人員打交道 、協調工作&#xff0c;這也要求硬件工程師具有豐富的知識面和強大的協調能力。 硬件工程師處于一個項目中的核心…

Java運算符及程序邏輯控制

&#x1f389;welcome to my blog 請留下你寶貴的足跡吧(點贊&#x1f44d;評論&#x1f4dd;收藏?&#xff09; &#x1f493;期待你的一鍵三連&#xff0c;你的鼓勵是我創作的動力之源&#x1f493; &#x1f423;目錄 &#x1f340;運算符&#x1f4da;1.算術運算符&#x…

centos7安裝jq報錯No package jq available

安裝EPEL倉庫 sudo yum install epel-release清理軟件倉緩存 sudo yum clean all重建軟件倉緩存 sudo yum makecache重新安裝jq yum install jq

python基礎知識點(藍橋杯python科目個人復習計劃67)

今日復習內容&#xff1a;做一下昨天的算法賽題目&#xff0c;試試基礎怎樣 小白挑戰賽一共6題&#xff0c;我只會5題&#xff0c;而且這5題是全對的&#xff0c;比起上次的兩題&#xff0c;已經有進步了。 第一題&#xff1a;六一獻禮 題目描述&#xff1a; 六月的陽光熱情…

python判斷文件是否存在

import os test_path "/Users/yxk/Desktop/test/GrayScale.tif" if(os.path.exists(test_path)):print(文件存在&#xff01;&#xff01;&#xff01;&#xff01;) else:print("文件不存在&#xff01;&#xff01;&#xff01;&#xff01;")結果如下 …

net前端怎么集成:探索集成之道

net前端怎么集成&#xff1a;探索集成之道 在軟件開發領域&#xff0c;前端集成是一個復雜而關鍵的環節。特別是在.NET框架中&#xff0c;前端集成的成功與否直接影響著應用程序的整體性能和用戶體驗。本文將深入剖析net前端集成的四個方面、五個方面、六個方面和七個方面&…

RabbitMQ(四)事務消息,惰性隊列,優先隊列

文章目錄 事務消息概念配置 惰性隊列概念應用場景 優先隊列概念配置 事務消息 僅在生產者端有效&#xff0c;消費端無效 概念 總結&#xff1a; 在生產者端使用事務消息和消費端沒有關系在生產者端使用事務消息僅僅是控制事務內的消息是否發送提交事務就把事務內所有消息都發送…

Python知識點13---面向對象的編程

提前說一點&#xff1a;如果你是專注于Python開發&#xff0c;那么本系列知識點只是帶你入個門再詳細的開發點就要去看其他資料了&#xff0c;而如果你和作者一樣只是操作其他技術的Python API那就足夠了。 Python是一個完全面向對象開發的語言&#xff0c;它的一切都以對象的…

Java面試——專業技能

優質博文&#xff1a;IT-BLOG-CN 一、簡單講下 Java 的跨平臺原理 由于各個操作系統&#xff08;Windows&#xff0c;Linux等&#xff09;支持的指令集不是完全一致的。就會讓我們程序在不同的操作系統上要執行不同的程序代碼。Java 開發了適用于不同操作系統及位數的 Java 虛擬…

【教程】自監督 對比學習,代碼,爽學一波

from&#xff1a; https://docs.lightly.ai/self-supervised-learning/examples/simclr.html

代碼隨想錄第22天|回溯part2 組合總和III電話號碼的字母組合

216.組合總和III 當組合的數量為k就判斷和&#xff0c;并且返回。 在枚舉的時候可以進行剪枝&#xff0c;如果總和已經超過了n&#xff0c;那么就沒必要繼續遞歸下去了 class Solution { public:vector<int> path;vector<vector<int>> res;void backTrackin…

微信小程序手機號碼授權登錄

文章目錄 一、微信小程序開發二、使用步驟1.前端代碼2.后臺配置3.后臺代碼 總結 一、微信小程序開發 目前個人的小程序無法使用手機號碼授權登錄&#xff0c;可以使用測試號進行開發 二、使用步驟 1.前端代碼 代碼如下&#xff08;示例&#xff09;&#xff1a; <butto…

Java版本家政上門系統源碼,自主研發、安全可控,支持任意二次開發

家政上門系統源碼&#xff0c;Java版本&#xff0c;自主研發、安全可控。支持任意二次開發、有豐富合作案例。多端管理&#xff1a;管理端、用戶端、服務端。 技術參數&#xff1a; 技術架構&#xff1a;springboot、mysql 、Thymeleaf 開發語言&#xff1a;java1.8、vue 開…

python 象棋小游戲代碼

以下是一個簡單的Python象棋小游戲的代碼示例。這個示例使用了pygame庫來創建圖形用戶界面和處理用戶輸入。 首先&#xff0c;確保安裝了pygame庫&#xff1a; pip install pygame 然后&#xff0c;可以運行以下代碼&#xff1a; import pygame import sys # 初始化pygam…

軟件開發步驟詳解

一、引言 隨著信息技術的迅猛發展&#xff0c;軟件已成為現代社會不可或缺的一部分。無論是企業運營、個人生活還是科學研究&#xff0c;都離不開各種軟件的支持。因此&#xff0c;掌握軟件開發的步驟和技巧對于IT從業者來說至關重要。本文旨在詳細介紹軟件開發的整個流程&…