JavaScript基礎知識5(對象)

JavaScript基礎知識5(對象)

    • 對象
      • 創建對象
        • 使用對象字面量
        • 使用 `new Object()`
      • 訪問和修改屬性
        • 點表示法
        • 方括號表示法
      • 動態添加和刪除屬性
        • 添加屬性
        • 刪除屬性
      • 對象方法
      • 對象的遍歷
      • 常用屬性和方法
        • 數學常量
        • 數學函數
        • 三角函數
      • 使用示例
        • 生成隨機整數
        • 計算圓的面積
        • 求最大值和最小值
      • 對象常用方法
        • `Object.keys()`
        • `Object.values()`
        • `Object.entries()`
      • 對象的合并
        • `Object.assign()`
        • 展開運算符 `...`
      • 示例代碼
      • 總結
      • null
        • 遍歷對象
    • 內置對象

對象

在 JavaScript 中,對象(Object)是用于存儲相關數據和功能的集合。對象由鍵值對(屬性)組成,鍵是字符串(或符號),值可以是任何類型,包括其他對象、函數、數組等。

創建對象

使用對象字面量

對象字面量是創建對象的最常見方法,使用花括號 {}

let person = {name: "John",age: 30,isStudent: true,greet: function() {console.log("Hello, my name is " + this.name);}
};console.log(person.name); // 輸出 "John"
console.log(person.age); // 輸出 30
person.greet(); // 輸出 "Hello, my name is John"

在這里插入圖片描述

使用 new Object()

可以使用 new Object() 語法創建對象,不過這種方法不如對象字面量常用。

let person = new Object();
person.name = "John";
person.age = 30;
person.isStudent = true;
person.greet = function() {console.log("Hello, my name is " + this.name);
};console.log(person.name); // 輸出 "John"
console.log(person.age); // 輸出 30
person.greet(); // 輸出 "Hello, my name is John"

訪問和修改屬性

點表示法
let person = {name: "John",age: 30
};console.log(person.name); // 輸出 "John"
person.age = 35;
console.log(person.age); // 輸出 35
方括號表示法

使用方括號表示法可以訪問使用變量或包含特殊字符的屬性。

let person = {"first name": "John",age: 30
};console.log(person["first name"]); // 輸出 "John"
person["age"] = 35;
console.log(person["age"]); // 輸出 35

在這里插入圖片描述

動態添加和刪除屬性

添加屬性

可以在對象創建后動態添加屬性。

let person = {name: "John"
};person.age = 30;
console.log(person.age); // 輸出 30
刪除屬性

使用 delete 運算符刪除屬性。

let person = {name: "John",age: 30
};delete person.age;
console.log(person.age); // 輸出 undefined

對象方法

對象的方法是作為對象屬性的函數。方法可以通過對象字面量或動態添加。

let person = {name: "John",greet: function() {console.log("Hello, my name is " + this.name);}
};person.greet(); // 輸出 "Hello, my name is John"

對象的遍歷

可以使用 for...in 循環遍歷對象的屬性。

let person = {name: "John",age: 30,isStudent: true
};for (let key in person) {console.log(key)//順序輸出的是屬性名:'name'、'age'、'isstudent'console.log(person[key])//順序輸出的是屬性值:'john'、'30'、'true'
}

在 JavaScript 中,Math 對象是一個內置的對象,提供了一些基本的數學常量和函數。它不是一個構造函數,因此不能用作對象的模板。所有的屬性和方法都是靜態的,可以直接調用而無需創建 Math 對象的實例。

常用屬性和方法

數學常量
  • Math.PI:圓周率(π),約為 3.14159。
  • Math.E:自然對數的底數(e),約為 2.718。
  • Math.LN2:2 的自然對數,約為 0.693。
  • Math.LN10:10 的自然對數,約為 2.302。
  • Math.LOG2E:以 2 為底的 e 的對數,約為 1.442。
  • Math.LOG10E:以 10 為底的 e 的對數,約為 0.434。
  • Math.SQRT2:2 的平方根,約為 1.414。
  • Math.SQRT1_2:1/2 的平方根,約為 0.707。
console.log(Math.PI); // 輸出 3.141592653589793
console.log(Math.E); // 輸出 2.718281828459045
數學函數
  • Math.abs(x):返回 x 的絕對值。
  • Math.ceil(x):向上取整,返回大于或等于 x 的最小整數。
  • Math.floor(x):向下取整,返回小于或等于 x 的最大整數。
  • Math.round(x):四舍五入,返回最接近 x 的整數。
  • Math.max(...values):返回一組數中的最大值。
  • Math.min(...values):返回一組數中的最小值。
  • Math.random():返回一個介于 0(包括)和 1(不包括)之間的偽隨機數。
  • Math.pow(base, exponent):返回 baseexponent 次冪。
  • Math.sqrt(x):返回 x 的平方根。
  • Math.cbrt(x):返回 x 的立方根。
  • Math.log(x):返回 x 的自然對數(以 e 為底)。
  • Math.log2(x):返回 x 的以 2 為底的對數。
  • Math.log10(x):返回 x 的以 10 為底的對數。
  • Math.exp(x):返回 ex 次冪。
console.log(Math.abs(-5)); // 輸出 5
console.log(Math.ceil(4.2)); // 輸出 5
console.log(Math.floor(4.8)); // 輸出 4
console.log(Math.round(4.5)); // 輸出 5
console.log(Math.max(1, 2, 3)); // 輸出 3
console.log(Math.min(1, 2, 3)); // 輸出 1
console.log(Math.random()); // 輸出 0 到 1 之間的隨機數
console.log(Math.pow(2, 3)); // 輸出 8
console.log(Math.sqrt(16)); // 輸出 4
console.log(Math.cbrt(27)); // 輸出 3
console.log(Math.log(Math.E)); // 輸出 1
console.log(Math.log2(8)); // 輸出 3
console.log(Math.log10(100)); // 輸出 2
console.log(Math.exp(1)); // 輸出 2.718281828459045
三角函數
  • Math.sin(x):返回 x 的正弦(弧度)。
  • Math.cos(x):返回 x 的余弦(弧度)。
  • Math.tan(x):返回 x 的正切(弧度)。
  • Math.asin(x):返回 x 的反正弦(弧度)。
  • Math.acos(x):返回 x 的反余弦(弧度)。
  • Math.atan(x):返回 x 的反正切(弧度)。
  • Math.atan2(y, x):返回從原點到點 (x, y) 的直線與 x 軸正向之間的角度(弧度)。
console.log(Math.sin(Math.PI / 2)); // 輸出 1
console.log(Math.cos(Math.PI)); // 輸出 -1
console.log(Math.tan(Math.PI / 4)); // 輸出 1
console.log(Math.asin(1)); // 輸出 1.5707963267948966 (π/2)
console.log(Math.acos(1)); // 輸出 0
console.log(Math.atan(1)); // 輸出 0.7853981633974483 (π/4)
console.log(Math.atan2(1, 1)); // 輸出 0.7853981633974483 (π/4)

使用示例

生成隨機整數

生成一個范圍在 [min, max] 的隨機整數:

function getRandomInt(min, max) {min = Math.ceil(min);max = Math.floor(max);return Math.floor(Math.random() * (max - min + 1)) + min;
}console.log(getRandomInt(1, 10)); // 輸出 1 到 10 之間的隨機整數

在這里插入圖片描述

計算圓的面積

給定半徑計算圓的面積:

function getCircleArea(radius) {return Math.PI * Math.pow(radius, 2);
}console.log(getCircleArea(5)); // 輸出 78.53981633974483
求最大值和最小值

從一組數中找出最大值和最小值:

let numbers = [1, 2, 3, 4, 5];
let maxNum = Math.max(...numbers);
let minNum = Math.min(...numbers);console.log(maxNum); // 輸出 5
console.log(minNum); // 輸出 1

對象常用方法

Object.keys()

返回對象自身可枚舉屬性的數組。

let person = {name: "John",age: 30
};console.log(Object.keys(person)); // 輸出 ["name", "age"]
Object.values()

返回對象自身可枚舉屬性值的數組。

let person = {name: "John",age: 30
};console.log(Object.values(person)); // 輸出 ["John", 30]
Object.entries()

返回對象自身可枚舉屬性的鍵值對數組。

let person = {name: "John",age: 30
};console.log(Object.entries(person)); // 輸出 [["name", "John"], ["age", 30]]

對象的合并

可以使用 Object.assign() 或展開運算符 ... 合并對象。

Object.assign()
let person = {name: "John"
};let details = {age: 30,isStudent: true
};let merged = Object.assign({}, person, details);
console.log(merged); // 輸出 { name: "John", age: 30, isStudent: true }
展開運算符 ...
let person = {name: "John"
};let details = {age: 30,isStudent: true
};let merged = { ...person, ...details };
console.log(merged); // 輸出 { name: "John", age: 30, isStudent: true }

示例代碼

let car = {brand: "Toyota",model: "Corolla",year: 2020,displayInfo: function() {console.log(`Brand: ${this.brand}, Model: ${this.model}, Year: ${this.year}`);}
};car.displayInfo(); // 輸出 "Brand: Toyota, Model: Corolla, Year: 2020"car.color = "Red";
console.log(car.color); // 輸出 "Red"delete car.year;
console.log(car.year); // 輸出 undefinedfor (let key in car) {if (car.hasOwnProperty(key)) {console.log(key + ": " + car[key]);}
}let carKeys = Object.keys(car);
console.log(carKeys); // 輸出 ["brand", "model", "color", "displayInfo"]let carValues = Object.values(car);
console.log(carValues); // 輸出 ["Toyota", "Corolla", "Red", ?]let carEntries = Object.entries(car);
console.log(carEntries); // 輸出 [["brand", "Toyota"], ["model", "Corolla"], ["color", "Red"], ["displayInfo", ?]]

總結

  • 創建對象:使用對象字面量 {}new Object()
  • 訪問和修改屬性:使用點表示法或方括號表示法。
  • 動態添加和刪除屬性:直接賦值添加屬性,使用 delete 刪除屬性。
  • 對象方法:作為對象屬性的函數。
  • 對象的遍歷:使用 for...in 循環。
  • 對象常用方法Object.keys()Object.values()Object.entries()
  • 對象的合并:使用 Object.assign() 或展開運算符 ...

理解和掌握對象的各種操作,有助于編寫更加靈活和高效的 JavaScript 代碼。

null

null 也是 JavaScript 中數據類型的一種,通常只用它來表示不存在的對象。使用 typeof 檢測類型它的類型時,結果為 object

遍歷對象
let obj = {uname: 'pink'
}
for(let k in obj) {// k 屬性名  字符串  帶引號    obj.'uname'     k ===  'uname'// obj[k]  屬性值    obj['uname']   obj[k]
}

for in 不提倡遍歷數組 因為 k 是 字符串

內置對象

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

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

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

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

相關文章

QStringListModel 綁定到QListView

1.QStringListModel 綁定到listView,從而實現MV模型視圖 2.通過QStringListModel的新增、刪除、插入、上下移動,listView來展示出來 3.下移動一行,傳入curRow2 的個人理解 布局 .h聲明 private:QStringList m_strList;QStringListModel *m_m…

Matlab|基于改進鯨魚優化算法的微網系統能量優化管理matlab-源碼

目錄 一、主要內容 二、部分代碼 三、運行結果 四、下載鏈接 一、主要內容 該程序為《基于改進鯨魚優化算法的微網系統能量優化管理》源碼,主要內容如下: 針對包含多種可再生能源的冷熱電聯供型微網系統的能量優化問題,為了優化其運行過程…

中級職稱如何查詢真假呢?

關于中級職稱如何查詢真假,大家都會有疑問,辦到職稱的人員肯定是想查一查手里的證書,那么沒有證書的人員也想了解一下,今天甘建二告訴大家幾個通俗的職稱查詢方式: 1.電話查詢(以前辦理職稱是這種查詢方式…

20W+喜愛的Pathview網頁版 | 整合表達譜數據KEGG通路可視化

Pathview網站簡介 網址:https://pathview.uncc.edu/ 前段時間介紹了一個R包 — Pathview。它可以整合表達譜數據并可視化KEGG通路,操作是先自動下載KEGG官網上的通路圖,然后整合輸入數據對通路圖進行再次渲染。從而對KEGG通路圖進行一定程度…

uniapp+nodejs實現小程序支付

1.準備商戶號、企業級小程序(或者個體工商戶級別的) 2.在小程序端調用uni.login獲取code,傳遞給后端 uni.login({success: loginRes > {uni.request({url: "http://127.0.0.1:3003/wxpay/pay",data: {code: loginRes.code},method: "get",…

RedHat9 | kickstart無人值守批量安裝

一、知識補充 kickstart Kickstart是一種用于Linux系統安裝的自動化工具,它通過一個名為ks.cfg的配置文件來定義Linux安裝過程中的各種參數和設置。 kickstart的工作原理 Kickstart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,…

漏洞分析 | PHP CGI Windows平臺遠程代碼執行漏洞(CVE-2024-4577)

漏洞概述 PHP CGI(Common Gateway Interface)是在Windows平臺上運行PHP的一種方式。CGI是一種標準接口,允許Web服務器與外部應用程序(如PHP腳本)進行交互,從而生成動態網頁內容。 近期,PHP發布…

Request safe_get 小工具

接口安全獲取請求參數小工具( python) flask import logging import traceback from flask import (Blueprint, request, Response, jsonify, g, send_file)def safe_get(req: request, attr: str, defaultNone):try:if attr in req.form:return req.f…

拍攝泡咖啡的劇本!

泡咖啡的過程可以是一種放松和享受的儀式,同時也是一個記錄生活美好瞬間的好機會。以下是一些步驟和提示,幫助您記錄泡咖啡的過程: 1. **準備材料**: 確保您有新鮮的咖啡豆、磨豆機、咖啡壺、濾紙、熱水和杯子。 2. **選擇音樂**&…

Logstash安裝插件失敗的問題

Logstash安裝插件失敗的問題 安裝 logstash-output-jdbc 失敗 報錯為: Unable to download data from https://rubygems.org - Net::OpenTimeout: Failed to open TCP connection to rubygems.org:443 (execution expired) (https://rubygems.org/latest_specs.4.…

【算法 - 哈希表】兩數之和

這里寫自定義目錄標題 兩數之和題目解析思路解法一 :暴力枚舉 依次遍歷解法二 :使用哈希表來做優化 核心邏輯為什么之前的暴力枚舉策略不太好用了?所以,這就是 這道題選擇 固定一個數,再與其前面的數逐一對比完后&…

Linux系統(CentOS)安裝iptables防火墻

1,先檢查是否安裝了iptables 檢查安裝文件-執行命令:rpm -qa|grep iptables 檢查安裝文件-執行命令:service iptables status 2,如果安裝了就卸裝(iptables-1.4.21-35.el7.x86_64 是上面命令查出來的版本) 執行命令&#xff1a…

藍牙信標和藍牙標簽我們如何區分,區分方法有哪些?

藍牙信標和藍牙標簽其實是兩種不同的技術,很多人可能會把藍牙信標和藍牙標簽搞混,因為區分不開來,但實際上,區分這兩種技術也很簡單,因為它們各自都有不一樣的特性,通過這些特性,我們也能正常區…

相機光學(二十四)——CRA角度

CRA角度 0.參考資料1.什么是CRA角度2.為什么 CRA 會導致luma shading3.為什么 CRA 會導致color shading4.CRA相差過大的具體表現5.CRA Matching6.怎樣選擇sensor的CRA 0.參考資料 1.芯片CRA角度與鏡頭的匹配關系(一) ??2.芯片CRA角度與鏡頭選型的匹配關…

爬蟲進階:Selenium與Ajax的無縫集成

爬蟲與Ajax的挑戰 Ajax(Asynchronous JavaScript and XML)允許網頁在不重新加載整個頁面的情況下與服務器交換數據并更新部分內容。這為用戶帶來了更好的體驗,但同時也使得爬蟲在抓取數據時面臨以下挑戰: 動態內容加載&#xff…

go語言 函數和包

go語言 函數和包 一、函數 在Go語言中,函數是執行特定任務的自包含代碼塊。 1.函數的定義 函數通過func關鍵字定義,格式如下: func 函數名(形參 形參類型, 形參 形參類型) 返回值類型 {函數體return 返回值 }2.基礎函數類型 無參數無返回…

vue中數組出現__ob__: Observer屬性,導致不能正確使用問題解決

直接上圖,如下圖,數組中出現__ob__: Observer屬性,導致無法取值。 解決方案為:JSON.parse(JSON.stringify(數組變量名))深拷貝數組,重新生成一個可枚舉數組。 // 處理代碼如let tempIds JSON.parse(JSON.stringify(i…

一文帶你初探FreeRTOS信號量

本文記錄我初步學習FreeRTOS的信號量的知識,在此記錄分享,希望我的分享對你有所幫助! 什么是信號量 在FreeRTOS中,信號量(Semaphore)是一種用于任務間同步和資源共享的機制。信號量主要用于管理對共享資源的…

Cgi上傳文件 注意事項

//核心代碼 ofstream outfile("/opt/software/" file.getFilename(), ios::out | ios::binary); outfile << file.getData(); //錯誤方式&#xff1a;outfile << file.getData() <<endl; outfile.close(); 參考博客&#xff1a; https://blog.cs…

GNU/Linux - 各種包管理器介紹

Linux 包管理器根據不同的發行版和包管理系統有所不同。以下是一些常見的 Linux 包管理器&#xff1a; 1. RPM (Red Hat Package Manager) * 用于&#xff1a; Red Hat Enterprise Linux (RHEL), Fedora, CentOS, openSUSE * 包管理器&#xff1a; rpm, yum, dnf 2. DEB (Deb…