ECMAScript 的集合引用類型——Object講解

這是我參與8月更文挑戰的第6天,活動詳情查看:8月更文挑戰前端

在經常使用的引用類型中,Object 數一數二,儘管你發現 Object 實例並無多少功能,但卻很適合存儲和在應用程序之間交換數據。 建立 Object 實例有兩種方式, 一種是使用 new 操做符,還有一種是使用字面量的形式。後者更常使用,在建立大量屬性的對象時,字面量形式顯得更爲簡潔和方便。示例:web

// new 操做符形式
const obj = new Object();

// 字面量形式
const obj = {
	name: "Sam"
};
複製代碼

在這個例子中的字面量形式中,左大括號表示對象字面量開始,由於它出如今一個表達式上下文中。在 ECMAScript 中,表達式上下文指的是期待返回值的上下文。賦值操做符表示後面要期待一個值,所以左大括號表示一個表達式的開始。一樣是左大括號,若是出如今語句上下文中,好比 if 語句的條件後面,則表示一個語句塊的開始。 雖然兩種方式均可以建立對象實例,實際上大多數的開發者更傾向於使用對象字面量的方法建立,這樣看起來不只代碼量更少,也更有封裝全部相關數據的感受,在給函數傳遞大量可選參數的時候,也是不錯的方案。示例:markdown

function person(obj) {
    let output = "";

    if (typeof obj.name == "string"){
    output += "My name: " + obj.name;  
    }

    if (typeof obj.age == "number"){
    output += "My age: " + obj.age;  
    }

    console.log(output);
}

person({ name: "Sam", age: 25});
person({ name: "Echo"});
複製代碼

這裏,函數person()接收一個名爲 obj 的參數。這個參數可能有屬性 name 或 age,也可能兩個屬性都有或者都沒有。函數內部會使用 typeof 操做符測試每一個屬性是否存在,而後根據屬性有無構造並顯示一條消息。而後,這個函數被調用了兩次,每次都經過一個對象字面量傳入了不一樣的數據。兩種狀況下,函數都正常運行。 大多數狀況,訪問屬性通常是經過點去讀取,固然也能夠用中括號來讀取屬性,在使用中括號時,屬性名必須以字符串的形式。示例:函數

const obj = {name:"Sam"}

console.log(obj.name); // "Sam"
console.log(obj["name"]); // "Sam"
複製代碼

當屬性名中出現關鍵字或者錯誤語法的字符,更推薦使用中括號的形式讀取。例如:post

obj["first name"] = "Sam";
複製代碼

因爲first name中包含了一個空格,因此不能用點語法來讀取,推薦使用中括號形式。測試

寫在最後

寫做不易,但願能夠得到你的一個「贊」。若是文章對你有用,能夠選擇「收藏」。 若有文章有錯誤或建議,歡迎評論指正,謝謝你。❤️網站

歡迎閱讀其它文章

相關文章
相關標籤/搜索