搜尋
首頁web前端js教程JavaScript建構函式建立物件(總結分享)

本篇文章為大家帶來了關於javascript的相關知識,其中主要介紹了關於JavaScript構造函數創建對象的相關問題,構造函數(Constructor)也稱為構造器、類型函數,功能類似物件範本,一個建構函式可以產生任意多個實例,實例物件具有相同的屬性、行為特徵,但不相等,下面一起來看一下,希望對大家有幫助。

JavaScript建構函式建立物件(總結分享)

【相關推薦:javascript影片教學web前端

什麼是建構子

JavaScript 建構函式(Constructor)也稱為建構器、型別函數,函式類似物件範本,一個建構函式可以產生任意多個實例,實例物件具有相同的屬性、行為特性,但不相等。
使用建構子可以建立不同類別的物件。

建構子的建立

建構子就是一個普通的函式。創建方式和普通函數沒有區別,構造函數習慣上首字母大寫

構造函數與普通函數的區別

#構造函數和普通函數的區別就是呼叫方式的不同

  • 普通函數是直接呼叫
  • 建構函數需要使用new關鍵字來呼叫
##this指向問題

#三種形式this的指向情況。

  • 當以函數的形式呼叫,this是window

  • 當以方法的形式呼叫時,誰呼叫方法this是誰

  • 當以建構函數的形式呼叫時,this就是新建立的那個物件

建構子的執行流程

  • #立刻建立一個新的物件

  • 將新建的物件設定為函數中this,在建構函式中可以使用this來引用新建的物件(即this指向新建立的物件)

  • 逐行執行函數中的程式碼

  • 將新建的物件作為傳回值傳回

JavaScript建構函式建立物件(總結分享)

使用同一個建構子建立的物件,我們稱為一類對象,也將一個建構函式稱為一個類別。我們將透過一個建構函數所建立的物件,稱為是該類別的實例。就上述而言Obj是一個類,而obj是Obj這個類別的實例。

建構子實例

建立兩個類,一個Person類,一個Dog類。

nbsp;html>
    <meta>
    <meta>
    <meta>
    <title>Document</title>
    <script>
        //构造一个创建人的类
        function Person(name , age , gender){
            console.log(&#39;指向:&#39;,this);
            this.name = name;
            this.age = age ;
            this.gender = gender;
            this.sayName = function(){
                console.log(this.name)
            }
        }

        //构造一个创建狗的类
        function Dog(name , age ){
            console.log(&#39;指向:&#39;,this);
            this.name = name;
            this.age = age ;
            this.sayHello = function(){
                console.log(&#39;汪汪汪~~&#39;);
            }
        }

        //创建一个人的实例
        var per = new Person(&#39;苏凉&#39;,21,&#39;男&#39;);
        console.log(per);
        per.sayName();

        //创建一个狗的实例
        var dog = new Dog(&#39;旺财&#39;,5);
        console.log(dog);
        dog.sayHello();
    </script>
    
運行結果:

JavaScript建構函式建立物件(總結分享)

建構子的好處在於,我們可以區分很多不同的對象,也就是可以清楚的知道所建立的物件屬於哪一類,用普通創建物件和使用工廠模式創建物件都無法區分物件的種類,他們都屬於一個大類別(Object)。

instanceof關鍵字

使用instanceof可以檢查一個物件是否是一個類別的實例

語法:

物件instanceof 建構子

#如果是,則回傳true,否則回傳false

  console.log(dog instanceof Dog); //true
  console.log(dog instanceof Person); //false
  console.log(dog instanceof Object); //true
所有的物件都是Object的後代,所以任何物件和0bject做instanceof檢查時都會回傳true。

效能最佳化

建立一個Person建構子

在Person建構函式中,為每個物件都加入了一個sayName方法

目前我們的方法是在建構子內部創建的,也就是建構子每執行一次就會創建一個新的sayName方法

也就是所有實例的sayName都是唯一的。

這樣會導致佔用大量的內存,對於每一個新創建的物件就會重新創建一個新的方法。

JavaScript建構函式建立物件(總結分享)

解決方法:將新建立物件的方法單獨提取出來,如下

nbsp;html>
    <meta>
    <meta>
    <meta>
    <title>Document</title>
    <script>
		//将新创建对象的方法单独提取出来
        function sayName(){
            console.log(this.name)
        }

        //构造一个创建人的类
        function Person(name , age , gender){
            console.log(&#39;指向:&#39;,this);
            this.name = name;
            this.age = age ;
            this.gender = gender;
            this.sayName = sayName;
        }
        var per = new Person(&#39;苏凉&#39;,21,&#39;男&#39;);
        var per1 = new Person(&#39;小红&#39;,18,&#39;女&#39;);
        console.log(per);
        per.sayName();
        per1.sayName();
        console.log(per.sayName == per1.sayName); //true
    </script>
    

JavaScript建構函式建立物件(總結分享)

可以看出per的sayName方法和per1的sayName方法是一樣的。這樣就解決了創建不同的實例都會重新創建一個新的sayName方法,大大減少了記憶體的佔用。

知識擴充

(1.)我們為什麼需要建構子:##因為前面兩種建立物件的方式一次只能建立一個物件。

(2.)什麼是建構子:

建構子:就是把我們物件裡面的一些相同的屬性和方法抽像出來封裝到函數裡面

(3.)利用构造函数创建对象及使用方法

构造函数的函数名从第一个单词开始,每个单词的首写字母都要大写。

JavaScript建構函式建立物件(總結分享)

/ /4.在构造函数里面我们的属性和方法前面都必须加this关键字

//声明构造函数语法格式:
function 构造函数名() {
this.属性 = 值;
this.方法 = function() {}
}
//调用构造函数语法格式:
new 构造函数名();

以下是构造函数语法格式的案例:

JavaScript建構函式建立物件(總結分享)

【相关推荐:javascript视频教程web前端

以上是JavaScript建構函式建立物件(總結分享)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序Python vs. JavaScript:比較用例和應用程序Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C/C在JavaScript口譯員和編譯器中的作用C/C在JavaScript口譯員和編譯器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在行動中:現實世界中的示例和項目JavaScript在行動中:現實世界中的示例和項目Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)