這是我參與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
中包含了一個空格,因此不能用點語法來讀取,推薦使用中括號形式。測試
寫做不易,但願能夠得到你的一個「贊」。若是文章對你有用,能夠選擇「收藏」。 若有文章有錯誤或建議,歡迎評論指正,謝謝你。❤️網站