JavaScript進階 第二天

  • 深入對象
  • 內置構造函數

一. 深入對象

  • 創建對象三種方式
  • 構造函數
  • 實例成員&靜態成員

1.1 創建對象三種方式

① 利用對象字面量創建對象

const o = {'name': '哈哈'
}

② 利用new Object 創建對象

const o = new Object({ name: '哈哈' })

③ 構造函數創建對象

1.2 構造函數

① 構造函數:是一種特殊的函數,主要用來初始化對象

② 使用場景:常規的{...} 語法允許創建一個對象,可以使用構造函數快速創建多個類似的對象

③ 約定:

  • 命名以大寫字母開頭
  • 只能由 new 操作符來執行

④ 寫法:

  • 使用new關鍵詞調用函數的行為被稱為實例化
  • 實例化構造函數沒有參數時可以省略()
  • 構造函數內部無需寫return,返回值即為新創建的對象
  • 構造函數內部的return返回的值無效,所以不要寫return
  • new Object()? new Date() 也是實例化構造函數
function Pig (uname, age) {this.name = unamethis.age = age
}
const p = new Pig('佩奇', 6)
const q = new Pig('喬治', 3)

⑤ 實例化執行過程

  • 創建新的空對象
  • 構造函數this指向新對象
  • 執行構造函數代碼,修改this, 添加新的屬性
  • 返回新對象

?1.3 實例成員&靜態成員

?①?實例成員

  • 通過構造函數創建的對象稱為實例對象,實例對象中的屬性和方法稱為實例成員
  • 為構造函數傳入參數,創建結構相同但值不同的對象
  • 構造函數創建的實例對象彼此獨立互不影響
function Pig (name) {this.name = name
}
const peiqi = new Pig('佩奇')
// 1.實例對象上的屬性和方法稱為實例成員
peiqi.sayHi = () => {console.log('hi')
}
console.log(peiqi)

② 靜態成員

  • 構造函數的屬性和方法被稱為靜態成員(靜態屬性和靜態方法)
  • 靜態成員只能構造函數來訪問
  • 靜態方法中的this指向構造函數
Pig.eyes = 2
console.log(Pig.eyes)Pig.sayHi = function () {console.log(this)
}
// 靜態成員調用
Pig.sayHi()

二.內置構造函數

  • Object
  • Array
  • String
  • Number

?① 基本數據類型:字符串,數值,布爾,undefined, null

?②? 引用類型:對象

?③? 字符串,數值,布爾等基本類型也都有專門的構造函數,這些我們稱為包裝類型

?④ 引用類型:Object, Array, RegExp, Date等

?⑤ 包裝類型:String, Number, Boolean 等

2.1 Object

① Object 是內置的構造函數,用于創建普通對象

const o = new Object({ name: '哈哈' })

② 三個靜態方法

(1)獲取所有屬性名:Object.keys, 返回的是一個數組

const o = {uname:'pink', age: 18}
// 1.獲取所有屬性名
console.log(Object.keys(o))

(2)獲取所有的屬性值:Object.values

console.log(Object.values(o))

(3)拷貝對象:?Object.assign(目標,拷貝對象)

? ? ? ? ?使用場景:經常給對象添加屬性

const oo = {}
Object.assign(oo, o)
console.log(oo)// 追加一個新的屬性
Object.assign(o, {gender: '女'})

?2.2 Array

?Array是內置的構造函數,用于創建數組,?建議使用字面量創建,不用Array構造函數創建

1. 實例方法

  • ?reduce 返回累計處理的結果,經常用于求和
  • 基本語法
arr.reduce(function(){}, 起始值)
arr.reduce(function(上一次值, 當前值){}, 初始值)
  • 參數

? ? ?① 沒有初始值

const total = arr.reduce(function (pre, current) {return pre + current
})

? ? ?②? 有初始值

const total = arr.reduce(function (pre, current) {return pre + current
}, 10)

? ? ③ 箭頭函數寫法

const total = arr.reduce((pre, current) => pre + current, 10)
console.log(total)

? ?④ reduce的執行過程

  • 如果沒有初始值,則上一次值是數組的第一個元素
  • 每一次循環,把返回值給作為下一次循環的上一次值
  • 如果有起始值,則起始值作為上一次值?

2.其他方法

編號方法含義
1join數組元素拼接為字符串,返回字符串
2find查找元素,返回符合測試條件的第一個數組值,如果沒有符合條件的就返回undefined
3every檢測數組所有元素是否都符合指定條件,如果所有元素都通過檢測返回true, 否則返回false
4some檢測數組中的元素是否滿足指定條件,如果數組中有元素滿足條件返回true
5concat合并兩個數組,返回生成新數組
6sort對原數組單元值排序
7splice刪除或替換原數組單元
8reverse反轉數組
9findIndex查找元素的索引值

  • find方法使用舉例:
const arr = ['red', 'blue', 'green']
const re = arr.find(function (item) {return item === 'blue'
})
console.log(re)const arr = [
{name: '小米',price: 1999
},
{name: '華為',price: 3999
}
]const re = arr.find(item => item.name === '小米')
console.log(re)
  • ?every方法:每一個是否都符合條件,如果都符合,返回true, 如果有一個不符合,返回false
const arr1 = [10, 20, 30]
const flag = arr1.every(item => item >= 20)
console.log(flag)
  • some方法
const arr1 = [10, 20, 30]
const flag = arr1.some(item => item >= 40)
console.log(flag)

3.數組靜態方法

  • 把偽數組轉換為真數組
const lis = document.querySelectorAll('ul li')
// lis.pop()   // 偽數組無法使用數組的方法
const liss = Array.from(lis)
liss.pop()
console.log(liss)

2.3 String

編號方法含義
1length實例屬性,用來獲取字符串的長度
2split(’分隔符‘)用來將字符串拆分成數組
3substring(需要截取的第一個字符的索引,[, 結束的索引號)用于字符串截取
4startswith(檢測字符串[, 檢測位置索引號])?檢測是否以某字符開頭
5includes(搜索的字符串[, 檢測位置索引號])判斷一個字符串是否包含在另一個字符串中,根據情況返回true或false
6toUpperCase?將字母轉換成大寫
7toLowerCase用于將字母轉換成小寫
8indexOf檢測是否包含某字符
9endsWith檢測是否以某字符結尾
10replace用于替換字符串,支持正則匹配
11match用于查找字符串,支持正則匹配

// 1.split 字符串轉換為數組和join相反
const str = 'pink,red'
const arr = str.split(',')
console.log(arr)// 2.字符串截取
const str = 'hello'
// 不包含結束的索引號
console.log(str.substring(2, 3))

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

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

相關文章

探索規律:Python地圖數據可視化藝術

文章目錄 一 基礎地圖使用二 國內疫情可視化圖表2.1 實現步驟2.2 完整代碼2.3 運行結果 一 基礎地圖使用 使用 Pyecharts 構建地圖可視化也是很簡單的。Pyecharts 支持多種地圖類型,包括普通地圖、熱力圖、散點地圖等。以下是一個構建簡單地圖的示例,以…

認識Transformer:入門知識

視頻鏈接: https://www.youtube.com/watch?vugWDIIOHtPA&listPLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index60 文章目錄 Self-Attention layerMulti-head self-attentionPositional encodingSeq2Seq with AttentionTransformerUniversal Transformer Seq2Seq …

淺談 EMP-SSL + 代碼解讀:自監督對比學習的一種極簡主義風

論文鏈接:https://arxiv.org/pdf/2304.03977.pdf 代碼:https://github.com/tsb0601/EMP-SSL 其他學習鏈接:突破自監督學習效率極限!馬毅、LeCun聯合發布EMP-SSL:無需花哨trick,30個epoch即可實現SOTA 主要…

08 qt進程和網絡編程(cs模型)

一 、qt進程 qt中進程最主要的任務就是啟動額外應用程序 并且跟他們之間通信。進程類為QProcess 定義用途Header:#include qmake:QT += coreInherits:QIODevice//繼承于IO設備類1.1 QProcess基本使用 第一步:創建一個QProcess對象 // process = new QProcess(this); //說明…

資訊速遞 | ArkUI-X 預覽版已正式開源!

OpenHarmony項目群技術指導委員會(以下簡稱“TSC”)-跨平臺應用開發框架TSG所孵化項目 —— ArkUI-X,近期已正式開源 ,開發者基于一套主代碼,就可以將在OpenHarmony上開發的精美、高性能應用同時運行在Android、iOS等其…

LNMP環境搭建wordpress以及跳轉后臺報404解決

基于上文配置好的LNMP環境繼續搭建wordpress 目錄 一.到官網下載tar.gz包,并上傳到Linux上,也可以通過復制鏈接地址進行下載 二. 將wordpress中的所有文件移動到你nginx.conf中指定目錄中 三.為wordpress配置數據庫 四.到瀏覽器進行注冊 1.剛開始…

maven編譯始終提示無效的目標發行版的解決方法

摘自個人印象筆記2021-05-07:https://app.yinxiang.com/fx/55e1d5f4-aeea-446a-a768-0f1a48195f5b(圖顯示不完整可查看原筆記內容)1:確保IDE中的編譯版本正確 在idea中,主要看項目屬性中和setting的java compiler中對應的jdk版本是否正確&…

好用的安卓手機投屏到mac分享

工具推薦:scrcpy github地址:https://github.com/Genymobile/scrcpy/tree/master mac使用方式 安裝環境,打開terminal,執行以下命令,沒有brew的先安裝brew brew install scrcpy brew install android-platform-too…

學習 Iterator 迭代器

今天看到一個面試題, 讓下面解構賦值成立。 let [a,b] {a:1,b:2} 如果我們直接在瀏覽器輸出這行代碼,會直接報錯,說是 {a:1,b:2} 不能迭代。 看了es6文檔后,具有迭代器的就一下幾種類型,沒有Object類型,…

404. 左葉子之和

給定二叉樹的根節點 root ,返回所有左葉子之和。 示例 1: 輸入: root [3,9,20,null,null,15,7] 輸出: 24 解釋: 在這個二叉樹中,有兩個左葉子,分別是 9 和 15,所以返回 24示例 2: 輸入: root [1] 輸出: 0提示: 節點…

【NetCore】09-中間件

文章目錄 中間件:掌控請求處理過程的關鍵1. 中間件1.1 中間件工作原理1.2 中間件核心對象 2.異常處理中間件:區分真異常和邏輯異常2.1 處理異常的方式2.1.1 日常錯誤處理--定義錯誤頁的方法2.1.2 使用代理方法處理異常2.1.3 異常過濾器 IExceptionFilter2.1.4 特性過…

go web框架 gin-gonic源碼解讀02————router

go web框架 gin-gonic源碼解讀02————router 本來想先寫context,但是發現context能簡單講講的東西不多,就準備直接和router合在一起講好了 router是web服務的路由,是指講來自客戶端的http請求與服務器端的處理邏輯或者資源相映射的機制。&…

react實現對數組做增刪改操作自定義hook

需求 實現對數組的增刪改操作。 實現 import { useState } from react;const useArray (currList) > {const [list, setList] useState(currList);// 增const addItem (item) > {setList([...list, item]);};// 刪const removeItem (idx) > {const _arr [...l…

實戰指南,SpringBoot + Mybatis 如何對接多數據源

系列文章目錄 MyBatis緩存原理 Mybatis plugin 的使用及原理 MyBatisSpringboot 啟動到SQL執行全流程 數據庫操作不再困難,MyBatis動態Sql標簽解析 從零開始,手把手教你搭建Spring Boot后臺工程并說明 Spring框架與SpringBoot的關聯與區別 Spring監聽器…

輕松解決docker容器啟動閃退

docker run -p 3306:3306 --name mysql8 \ -v /usr/local/mysql/log:/var/log/mysql \ -v /usr/local/mysql/data:/var/lib/mysql \ -v /usr/local/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD666 -d mysql:8.0.32執行這個命令的時候閃退,其實這個是命令是對你…

[cv] stable diffusion——2、公式

背景: 在圖像生成領域中,最常見的生成模型是GAN和VAE。然而,在2020年,提出了一種新的模型,即DDPM(Denoising Diffusion Probabilistic Model),也被稱為擴散模型(Diffusi…

基于eBPF技術構建一種應用層網絡管控解決方案

引言 隨著網絡應用的不斷發展,在linux系統中對應用層網絡管控的需求也日益增加,而傳統的iptables、firewalld等工具難以針對應用層進行網絡管控。因此需要一種創新的解決方案來提升網絡應用的可管理性。 本文將探討如何使用eBPF技術構建一種應用層網絡…

【CSS】禁用元素鼠標事件(例如實現元素禁用效果)

文章目錄 基本用法 基本用法 pointer-events 屬性指定在什么情況下 (如果有) 某個特定的圖形元素可以成為鼠標事件。實際運用中可以通過對auto 和none動態控制,來動態實現元素的禁用效果。 屬性描述auto與pointer-events屬性未指定時的表現效果相同,對…

【筆試題心得】排序算法總結整理

排序算法匯總 常用十大排序算法_calm_G的博客-CSDN博客 以下動圖參考 十大經典排序算法 Python 版實現(附動圖演示) - 知乎 冒泡排序 排序過程如下圖所示: 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。對每一對相鄰…

【LeetCode-簡單】劍指 Offer 29. 順時針打印矩陣(詳解)

題目 輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字。 示例 1: 輸入:matrix [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,2,3,6,9,8,7,4,5]示例 2: 輸入:matrix [[1,2,3,4],[5,6,7,8],[9,10,1…