JS進階-深入對象

學習目標:

  • 掌握深入對象

學習內容:

  1. 創建對象三種方式
  2. 構造函數
  3. 實例成員&靜態成員

創建對象三種方式:

  • 利用對象字面量創建對象
 const o = {name: '佩奇'}
  • 利用new Object創建對象
 const obj = new Object({ uname: '雪碧寶寶' })console.log(obj)
  • 利用構造函數創建對象
 <title>自己定義構造函數創建對象</title>
</head><body><script>//創建一個豬 構造函數function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('喬治', 3))const p = new Pig('佩奇', 6)console.log(p)// const pepa = { uname: '佩奇', age: 6 }// const obj = new Object()</script></body>

構造函數:

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

使用場景:常規的{...}語法允許創建一個對象。比如我們創建了佩奇的對象,繼續創建喬治的對象還需要重新寫一遍,此時通過構造函數快速創建多個類似的對象

 //創建一個豬 構造函數function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('喬治', 3))const p = new Pig('佩奇', 6)const Georage = new Pig('喬治', 3)console.log(p)

注意
構造函數在技術上是常規函數。

不過有兩個約定:

  1. 它們對的命名以大寫字母開頭。
  2. 它們只能由new操作符來執行。

說明
3. 使用new關鍵字調用函數的行為被稱為實例化
4. 實例化構造函數時沒有參數時可以省略( )
5. 構造函數內部無需寫return,返回值即為新創建的對象。
6. 構造函數內部的return返回的值無效,所以不要寫return
7. new Object( )new Date( )也是實例化構造函數。

  • 小結:
  1. 構造函數的作用是什么?怎么寫呢?

構造函數是來快速創建多個類似的對象
大寫字母開頭的函數。

  1. new關鍵字調用函數的行為被稱為?

實例化。

  1. 構造函數內部需要寫return嗎,返回值是什么?

不需要。
構造函數自動返回創建的新的對象。

  • 練習:
 <title>練習-利用構造函數創建多個對象</title>
</head><body><script>function Goods(name, price, count) {this.name = namethis.price = pricethis.count = count}const mi = new Goods('小米', 1999, 20)console.log(mi)const hw = new Goods('華為', 3999, 59)console.log(hw)const vv = new Goods('vivo', 1888, 100)console.log(vv)// const date = new Date('2024-7-9')// console.log(data)</script></body>
  • 實例化執行過程

說明:

  1. 創建新對象。
  2. 構造函數this指向新對象。
  3. 執行構造函數代碼,修改this,添加新的屬性。
  4. 返回新對象。
 //創建一個豬 構造函數function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('喬治', 3))const p = new Pig('佩奇', 6)const Georage = new Pig('喬治', 3)console.log(p)

實例成員&靜態成員:

  • 實例成員

通過構造函數創建的對象稱為實例對象,實例對象中的屬性和方法稱為實例成員

說明:

  1. 實例對象的屬性和方法即為實例成員。
  2. 為構造函數傳入參數,動態創建結構相同但值不同的對象。
  3. 構造函數創建的實例對象彼此獨立互不影響。
//實例成員和靜態成員//1.實例成員:實例對象上的屬性和方法屬于實例成員function Pig(name) {this.name = name}const peiqi = new Pig('佩奇')const qiaozhi = new Pig('喬治')//構造函數創建的實例對象彼此獨立互不影響peiqi.name = '小豬佩奇' //實例屬性peiqi.sayHi = () => {   //實例方法console.log('hi~')}console.log(peiqi)console.log(qiaozhi)//為構造函數傳入參數,動態創建結構相同但值不同的對象console.log(peiqi === qiaozhi) //false  
  • 靜態成員

構造函數的屬性和方法被稱為靜態成員(靜態屬性和靜態方法)。

說明:

  1. 靜態成員只能構造函數來訪問。
  2. 靜態方法中的this指向構造函數。

比如Date.now( )Math.PIMath.random( )

 //2.靜態成員:構造函數上的屬性和方法稱為靜態成員function Pig(name) {this.name = name}Pig.eyes = 2 //靜態屬性Pig.sayHi = function () { //靜態方法console.log(this)}Pig.sayHi()console.log(Pig.eyes) //2
  • 小結:
  1. 實例成員(屬性和方法)寫在誰身上?

實例對象的屬性和方法即為實例成員。
實例對象相互獨立實例成員當前實例對象使用。

  1. 靜態成員(屬性和方法)寫在誰身上?

構造函數的屬性和方法被稱為靜態成員。
靜態成員只能構造函數訪問。

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

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

相關文章

OJhelper一款幫助你獲取各大oj信息的軟件

項目地址 應用功能 目前應用支持&#xff1a;查詢、自定義、收藏各大oj比賽信息&#xff0c;跳轉比賽界面。查詢各大oj的Rating分以及題量&#xff0c;查看題量餅狀圖。 應用環境 windows和安卓端 應用預覽&#xff1a; 維護概況 后期會提供持續更新&#xff0c;具體可以…

7.9數據結構

思維導圖 作業 doubleloop.h #ifndef __DOUBLELOOP_H__ #define __DOUBLELOOP_H__#include <stdio.h> #include <stdlib.h>typedef int datatype; typedef struct node {union{int len;datatype data;};struct node *pri;//前驅指針struct node *next;//后繼指針…

全終端自動化測試框架wyTest

突然有一些覺悟&#xff0c;程序猿不能只會吭哧吭哧的低頭做事&#xff0c;應該學會怎么去展示自己&#xff0c;怎么去宣傳自己&#xff0c;怎么把自己想做的事表述清楚。 于是&#xff0c;這兩天一直在整理自己的作品&#xff0c;也為接下來的找工作多做點準備。接下來…

Linux | 安裝lb-toolkits 1.2.4庫

Linux | 安裝 lb-toolkits 最近又需要下載葵花的數據&#xff0c;之前分享過一次代碼。今天發現之前的環境不小心被我刪了&#xff0c;而運行相關的代碼需要安裝lb-toolkits這個庫&#xff0c;今天正好記錄了一下安裝lb-toolkits的過程。 這里安裝的版本是1.2.4&#xff0c;別…

windows USB 設備驅動開發-發送MDL和錯誤恢復

USB 驅動程序可以在堆棧中使用鏈接式 MDL 功能發送數據&#xff0c;并且USB驅動的客戶端可以將傳輸緩沖區作為 MDL 結構鏈發送。 大多數 USB 主機控制器要求傳輸緩沖區幾乎是連續的。 幾乎連續意味著緩沖區可以開始和結束頁中的任意位置&#xff0c;但緩沖區的其余部分必須在頁…

53-4 內網代理6 - frp搭建三層代理

前提:53-3 內網代理5 - frp搭建二級代理-CSDN博客 三級網絡代理 在辦公區入侵后,發現需要進一步滲透核心區網絡(192.168.60.0/24),并登錄域控制器的遠程桌面。使用FRP在EDMZ區、辦公區與核心區之間建立三級網絡的SOCKS5代理,以便訪問核心區的域控制器。 VPS上的FRP服…

海豚調度器(DolphinScheduler)修改時區為東八區

海豚調度器設置了定時&#xff0c;執行的時間和設置時間不同&#xff0c;后來排查發現是時區問題。可以用下面方法和步驟來修改&#xff1a; 修改DolphinScheduler服務器時區 登錄服務器&#xff1a;首先&#xff0c;通過SSH或其他方式登錄到運行DolphinScheduler服務的服務器…

壓縮感知3——重構算法正交匹配追蹤算法

算法流程 問題的實質是&#xff1a;AX Y 求解&#xff08;A是M維&#xff0c;Y是N維且N>>M并且稀疏度K<M&#xff09;明顯X有無窮多解&#xff0c;重構過程是M次采樣得到的采樣值升維的過程。OMP算法的具體步驟&#xff1a;(1)用X表示信號&#xff0c;初始化殘差e0 …

計算給定數字的階乘

1 問題 計算給定數字的階乘. 2 方法 使用while循環。使用for循環。使用函數。 通過實驗、實踐等證明提出的方法是有效的&#xff0c;是能夠解決開頭提出的問題。 代碼清單 1 使用while循環numberint(input(請輸入一個數字:))factorial1i1while i<number: factorialfactor…

【論文速讀】| JADE:用于大語言模型的基于語言學的安全評估平臺

本次分享論文&#xff1a;JADE : A Linguistics-based Safety Evaluation Platform for Large Language Models 基本信息 原文作者&#xff1a;Mi Zhang, Xudong Pan, Min Yang 作者單位&#xff1a;Whitzard-AI, System Software and Security Lab Fudan University 關鍵…

AWS Glue 與 Amazon Redshift 的安全通信配置

1. 引言 在 AWS 環境中,確保服務間的安全通信至關重要。本文將探討 AWS Glue 與 Amazon Redshift 之間的安全通信配置,特別是為什么需要特定的安全組設置,以及如何正確實施這些配置。 2. 背景 AWS Glue:全托管的 ETL(提取、轉換、加載)服務Amazon Redshift:快速、完全…

嵌入式底層開發 入門學習路線

入門嵌入式底層開發的學習路線可以分為幾個關鍵階段&#xff0c;下面是一個較為系統的學習路徑&#xff0c;它涵蓋了從基礎知識到實際項目應用的全過程。 1. 基礎知識 計算機科學基礎&#xff1a;理解數據結構、算法、操作系統等基本概念。電子和電路理論&#xff1a;學習數字…

『大模型筆記』GraphRAG:用于復雜數據發現的新工具現已在GitHub上發布

GraphRAG:用于復雜數據發現的新工具現已在GitHub上發布 文章目錄 一. GraphRAG:用于復雜數據發現的新工具現已在GitHub上發布1. 評估和結果2. 研究見解和未來方向二. 參考文獻一. GraphRAG:用于復雜數據發現的新工具現已在GitHub上發布 下載 GraphRAG今年早些時候,我們介紹…

倒計時 2 周!CommunityOverCode Asia 2024 IoT Community 專題部分

CommunityOverCode 是 Apache 軟件基金會&#xff08;ASF&#xff09;的官方全球系列大會&#xff0c;其前身為 ApacheCon。自 1998 年以來&#xff0c;在 ASF 成立之前&#xff0c;ApacheCon 已經吸引了各個層次的參與者&#xff0c;在 300 多個 Apache 項目及其不同的社區中探…

【Unix】SunOS/Oracle Solaris系統介紹

一.SunOS系統介紹 SunOS 是由 Sun Microsystems 開發的 Unix 操作系統。它最初是為 Sun 的 SPARC 架構計算機設計的&#xff0c;后來也支持了 Intel x86 架構。SunOS 是基于 UNIX System V 4.1 版本&#xff0c;并且隨著時間的發展&#xff0c;SunOS 經歷了多個版本迭代&#…

百度文心4.0 Turbo開放,領跑國內AI大模型賽道!

百度文心4.0 Turbo開放&#xff0c;領跑國內AI大模型賽道&#xff01; 前言 文心一言大模型 就在7月5日&#xff0c;在2024世界人工智能大會 (WAIC) 上&#xff0c;百度副總裁謝廣軍宣布文心大模型4.0 Turbo正式向企業客戶全面開放&#xff01;這一舉動直接引發了業界的關注。那…

springboot中@bean注解的創建和使用

bean的創建順序 在Spring Boot中&#xff0c;當一個配置類&#xff08;使用Configuration注解的類&#xff09;中定義了多個bean時&#xff0c;這些bean的創建順序并不完全由它們在類中的聲明順序決定。Spring框架在創建和管理bean時&#xff0c;遵循了復雜的依賴注入和生命周…

qt connect 函數詳解

在 Qt 框架中&#xff0c;connect 函數是一個非常重要的機制&#xff0c;用于在信號&#xff08;signal&#xff09;和槽&#xff08;slot&#xff09;之間建立連接。信號和槽是 Qt 中用于對象間通信的一種機制。當某個特定事件發生時&#xff0c;一個對象可以發射&#xff08;…

短鏈接day3

短鏈接分組模塊 新增短鏈接分組 在新增之前&#xff0c;需要判斷gid是否是唯一的。 //檢查gid是否已存在&#xff0c;保證gid唯一public boolean hasGid(String gid){LambdaQueryWrapper<GroupDO> queryWrapper Wrappers.lambdaQuery(GroupDO.class).eq(GroupDO::getG…

在Windows中使用開源高性能編輯器Zed(持續更新)

簡介 “Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter. It’s also open source.” “Zed是一款高性能的支持多人協作的代碼編輯器&#xff0c;由Atom和Tree-sitter的創建者開發。它也是開源的。” Zed主打“高性能”&…