搜尋
首頁web前端js教程JavaScript建立物件的寫法_javascript技巧

物件是什麼
從JavaScript定義上講物件是無序屬性的集合,其屬性可以包含基本值、物件或函數。也就是說物件是一組沒有特定順序的屬性,每個屬性會對應到一個值上,是一組鍵值對,值可以是資料或物件。

最簡單的對象
JavaScript的一對花括號{}就可以定義一個對象,這樣的寫法實際上和調用Object的構造函數一樣

複製程式碼 程式碼如下:

var obj={};

var obj={};;

var obj2 new Object();

這樣建構出來的物件只包含一個指向Object的prototype的指針,可以使用一些valueOf、hasQwnProperty等方法,沒有多大實際作用,自訂物件嘛總是要有一些自訂的屬性、方法神馬的。
複製碼


代碼如下:


var obj =0;
            obj.fn=function(){
            🎜>            var obj2={
               ){
                    alert(this);
        🎜>


可以在定義完對象後通過”.”為其添加屬性和方法,也可以使用字面量賦值方法在定義對象的時候為其添加屬性和方法,這樣創建的對象,其方法和屬性可以直接使用物件引用,類似於類別的靜態變數和靜態函數,這樣創建物件有一個明顯缺陷——在定義大量物件的時候很費力,要一遍遍的寫入幾乎是重複的程式碼。


抽像

既然是重複程式碼就可以抽像出來,用函數來做這些重複工作,在建立物件的時候呼叫一個專門建立物件的方法,對於不同的屬性值只需要傳入不同參數即可。

複製程式碼 程式碼如下:function var obj={};
                    return obj;
            }

          
                alert(this.a);
            });

這樣在創建大量物件的時候,就可以透過呼叫此方法來做一些重複工作了,這種方式也不完美,因為在很多時候需要判斷物件的類型,上面程式碼建立出來的物件都是最原始的Object物件實例,只是拓展了一些屬性和方法。

有型點

又是function登場的時候,JavaScript中function就是個對象,在創建對象的時候打可以拋開上面createObj方法,直接使用function作為對象,怎麼實現復用呢,這就在於function作為對象的特殊性了。

1. function可以接受參數,可以根據參數來建立相同類型不同值的物件

2. function作為構造函數(透過new操作符調用)的時候會返回一個對象,在貧下中農版jQuery中提到過一些構造函數的基本知識,簡單複製一下

建構函式的回傳值分為兩種情況,當function沒有return語句或return回一個基本型別(bool,int,string,undefined,null)的時候,傳回new 所建立的匿名對象,該物件即為函數實例;如果function體內return一個引用類型物件(Array,Function,Object等)時,該物件會覆寫new建立的匿名物件作為回傳值。

3. 那麼使用function怎麼解決類型識別問題呢,每個function實例物件都會有一個constructor屬性(也不是“有”,而是可以對應),這個屬性就可以指示其構造是誰,也可以使用instanceof 操作符來做判斷物件是否為XXX的實例。

不能光說不練,上碼

複製碼 代碼如下:

f =name;
                this.fn=function(){
                  }
            }

         🎜>
            console.log(person1.constructor==Person);//true
        
這樣就完美了吧,也不是!雖然建構子可以是物件有型,但物件的每個實例中的方法都要重複一遍!


複製碼

代碼如下:f =name;                this.fn=function(){                  }            }
         🎜>            var person2=new Person('Frank');

           
看看看,雖然兩個實例的fn一模一樣,但是卻不是一回事兒,這如果一個function物件有一千個方法,那麼它的每個實例都要包含這些方法的copy,很讓內存無語啊。


不玩兒虛的了


究竟有沒有一種近乎完美的構造對象的方式,及不用做重複工作,又有型,對象通用方法又不必重複?其實可以發現使用function已經距離要求和接近了,只差那麼一點兒——需要一個所有function對象的實例共享的容器,在這個容器內存發實例需要共享的屬性和方法,正好這個容器是現成的— —prototype,不了解prototype的同學可以看看
JavaScript prototype

複製程式碼

程式碼如下:


function Person(name){
                this.name=name;
      Person.prototype.share=[];

            Person.prototype. printName=function(){
                alert(this.name);
       new Person('Byron');
            var person2=new Person('Frank') ;

            console.log(person1.printName==person2.printName);//true



這樣每個Person的實例都有自己的屬性name,又有所有實例共享的屬性share和方法printName,基本問題都解決了,對於一般的對象處理就可以始終這個有型又有愛的創建對像模式了。
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript的演變:當前的趨勢和未來前景JavaScript的演變:當前的趨勢和未來前景Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

神秘的JavaScript:它的作用以及為什麼重要神秘的JavaScript:它的作用以及為什麼重要Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python還是JavaScript更好?Python還是JavaScript更好?Apr 06, 2025 am 12:14 AM

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

如何安裝JavaScript?如何安裝JavaScript?Apr 05, 2025 am 12:16 AM

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

在Quartz中如何在任務開始前發送通知?在Quartz中如何在任務開始前發送通知?Apr 04, 2025 pm 09:24 PM

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中,如何在構造函數中獲取原型鏈上函數的參數?在JavaScript中,如何在構造函數中獲取原型鏈上函數的參數?Apr 04, 2025 pm 09:21 PM

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

微信小程序webview中Vue.js動態style位移失效是什麼原因?微信小程序webview中Vue.js動態style位移失效是什麼原因?Apr 04, 2025 pm 09:18 PM

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...

在Tampermonkey中如何實現對多個鏈接的並發GET請求並依次判斷返回結果?在Tampermonkey中如何實現對多個鏈接的並發GET請求並依次判斷返回結果?Apr 04, 2025 pm 09:15 PM

在Tampermonkey中如何對多個鏈接進行並發GET請求並依次判斷返回結果?在Tampermonkey腳本中,我們經常需要對多個鏈...

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MantisBT

MantisBT

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Safe Exam Browser

Safe Exam Browser

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