javascript物件聲明有幾種方式? javascript物件聲明的六種方式
本篇文章帶給大家的內容是關於javascript物件聲明有幾種方式? javascript物件聲明的六種方式 ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
-- 新向知識,就不用ES6寫法了。
一、字面量宣告
var obj = { 属性名1 : 属性值, 属性名2 : 属性值, 属性名3 : 属性值, 方法名1 : function() { ..... }, 方法名2 : function() { ..... } }
透過obj.屬性名
或obj.方法名()
就可以讀取或呼叫物件的屬性/方法了。
二、用new運算子建構Object物件
var obj = new Object(); obj.属性名1 = 属性值1; obj.属性名2 = 属性值2; obj.属性名3 = 属性值3; obj.属性名4 = 属性值4; obj.方法名1 = function() { .... }; obj.方法名2 = function() { .... }; ....
先用new Object()
建立一個空對象,然後用多條語句為物件新增屬性/方法。
三、用函數宣告的方式建構物件
函數Function
本身就是物件Object
的實例
var fn = new Function(); //new一个空函数 function myFn() {}; //声明一个空函数 console.log(fn instanceof Object); //true console.log(myFn instanceof Object); //true
所以可以模仿new Objcet()
建構物件的方式,用function myFn() {}
宣告一個自訂的函數,然後透過new myFn()
建構對象,例如:
function person(name, age) { this.name = name; this.age = age; this.say = function() { console.log('My name is '+ this.name + ', I\'m ' + this.age + ' years old'); } } var xiaoMing = new person('xiaoming', 16); xiaoMing.say(); //"My name is xiaoming, I'm 16 years old"
透過這種方式聲明的對象,每一次new
出來的對像都是獨立的,互相不會有影響,屬性、方法中的this
指向的就是新建立的、呼叫他們的物件。
四、工廠模式宣告物件
工廠模式聲明物件可以理解成二、三兩種方法的結合體,用三的思想套進二的內容。仿照上面例子舉例:
function person(name, age) { var obj = new Object(); obj.name = name; obj.age = age; obj.say = function() { console.log('My name is '+ obj.name + ', I\'m ' + obj.age + ' years old'); }; return obj; } var xiaoMing = person('xiaoming', 16); xiaoMing.say(); //"My name is xiaoming, I'm 16 years old" var xiaoHong = person('xiaohong', 18); xiaoHong.say(); //"My name is xiaohong, I'm 18 years old"
工廠模式之所以叫工廠模式,就是類似於現實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現同樣的效果。他的寫法與三、用函數宣告的方式建構物件
比較像,但是稍有不同。
每一次呼叫function
宣告的函數時,它在內部new Object()
,最後將這個新建的物件return
回來,呼叫時就像普通函數呼叫一樣,實例化的時候不用再new
了(內部new過)。雖然多次呼叫函數走的都是一樣的流程,但是生產出來的兩個產品互不影響。
五、原型方式宣告物件
function person() {/*空*/}; person.prototype.height = "1.80m"; person.prototype.grade = "Senior 3"; person.prototype.say = function() { console.log( 'I\'m ' + this.height + ' tall and I\'m in '+ this.grade); } var xiaoMing = new person(); xiaoMing.say(); //"I'm 1.80m tall and I'm in Senior 3"
原型方式是將該物件的屬性/方法寫在他的prototype
屬性所指的物件上。 (每一個函數或說物件都有一個prototype
屬性,這個屬性以物件的形式存在)。
每次new
其實有這麼一些操作:
1)建立一個空物件
2)把這個空物件的__proto__
指向建構子的prototype
3)把這個空物件賦值給this
4)執行建構子內的程式碼
new
出來的新物件的__proto__
屬性都會指向person.prototype
,然後就可以執行person.prototype
上的函數內容了。
這有點像是JS上常說的事件代理/委託。事件不直接綁定在該DOM元素上,而是綁定在它的父級元素,當給該DOM元素添加兄弟元素時,兄弟元素因為冒泡,能觸發相同的事件。
六、混合模式
混合模式可以理解成原型模式建構函數,舉例:
function person(name, height) { this.name = name; this.height = height; }; person.prototype.age = 18; person.prototype.grade = "Senior 3"; person.prototype.say = function() { console.log('Hello, my name is ' + this.name + '. I\'m ' + this.age + ' years old, ' + this.height + ' tall and I\'m in '+ this.grade + '.'); } var xiaoMing = new person('Xiaoming', '1.80m'); xiaoMing.say(); //"Hello, my name is Xiaoming. I'm 18 years old, 1.80m tall and I'm in Senior 3." var xiaoHong = new person('Xiaohong', '1.65m') xiaoHong.say(); //"Hello, my name is Xiaohong. I'm 18 years old, 1.65m tall and I'm in Senior 3."
對比混合模式和原型模式可以發現,混合模式函數體不是空的,而函數體內的內容就是前邊說的構造。
這種方式在實際開發中更常用。
相關推薦:
JavaScript下申明物件的幾種方法小結_javascript技巧
基於JavaScript 宣告全域變量的三種方式詳解_基礎知識
以上是javascript物件聲明有幾種方式? javascript物件聲明的六種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
