06-javaScript基礎-物件
阿新 • • 發佈:2018-11-19
文章配套視訊
辨別JS中的物件
除了5種基本的資料型別,其它的全都是物件
Object就是一個物件
為什麼要使用物件
基本資料型別都是單一的值, 比如: “itlike” , 123 , true等, 值和值之間沒有任何的聯絡。
比如想要描述一個人?
如果使用基本資料型別的資料,我們所建立的變數都是獨立,不能成為一個整體。
var name = "撩課學院"; var intro = "喜歡IT, 就上撩課"; var age = 108; 物件屬於一種複合的資料型別,在物件中可以儲存多個不同資料型別的屬性。
###JS中物件的分類
內建物件
由ES標準中定義的物件,在任何的ES的實現中都可以使用
比如:String Number Boolean Function Object Math ....
宿主物件
由JS的執行環境提供的物件,現在主要指由瀏覽器提供的物件
比如: BOM物件, DOM物件
自定義物件
我們自己建立的物件
比如: Person, Dog, ....
如何建立物件
1.建構函式
建構函式是專門用來建立物件的函式
使用new關鍵字呼叫的函式,可以被稱為建構函式(constructor)
var obj = new Object();
2.定義
在物件中儲存的值稱為屬性
向物件新增屬性: 物件.屬性名 = 屬性值
讀取物件中的屬性: 物件.屬性名:如果讀取物件中沒有的屬性,不會報錯而是會返回undefined
修改物件的屬性值: 物件.屬性名 = 新值
刪除物件的屬性: delete 物件.屬性名
3.定義一個人
var obj = new Object();
//向obj中新增一個name屬性
obj.name = "謝霆鋒";
//向obj中新增一個gender屬性
obj.gender = "男";
//向obj中新增一個age屬性
obj.age = 38;
讀取 修改 刪除
屬性名和屬性值
1.屬性名
物件的屬性名不強制要求遵守識別符號的規範, 怎麼寫都可以, 但還是按照標準來比較好!
var obj = new Object();
obj.name = "葉建華";
obj.if = "如果";
console.log(obj);
注意
如果要使用特殊的屬性名,不能採用.的方式來操作,
需要使用另一種方式,
語法: 物件["屬性名"] = 屬性值, 讀取也要用該方式
obj["666"] = 888;
console.log(obj["666"]);
var str = '666';
obj[str] = 888;
console.log(obj[str]);
2.屬性值
JS物件的屬性值,可以是任意的資料型別, 也可以是一個物件
obj.content = null;
obj.content = true;
obj.content = undefined;
除錯
var obj2 = new Object();
obj2.name = "小花花";
obj.dog = obj2;
3.in 運算子
定義:通過該運算子可以檢查一個物件中是否含有指定的屬性, 如果有則返回true,沒有則返回false
語法:"屬性名" in 物件
基本型別和引用型別在堆疊中的表示
1.基本資料型別
String Number Boolean Null Undefined
2.引用資料型別
Object
3.區別
JS中的變數都是儲存到棧記憶體中的,
基本資料型別的值直接在棧記憶體中儲存,
值與值之間是獨立存在,
修改一個變數不會影響其他的變數
物件是儲存到堆記憶體中的,
每建立一個新的物件,
就會在堆記憶體中開闢出一個新的空間,
而變數儲存的是物件的記憶體地址(物件的引用),
如果兩個變數儲存的是同一個物件引用,
當一個通過一個變數修改屬性時,另一個也會受到影響
4.畫圖分析
5.注意
比較兩個基本資料型別的值時,就是比較值。
比較兩個引用資料型別時,
它是比較的物件的記憶體地址,
如果兩個物件是一摸一樣的,但是地址不同,它也會返回false
物件字面量
使用物件字面量,可以在建立物件時,直接指定物件中的屬性
語法:var 物件 = {屬性名:屬性值,屬性名:屬性值....};
物件字面量的屬性名可以加引號也可以不加,建議不加, 如果要使用一些特殊的名字,則必須加引號
格式:屬性名和屬性值是一組一組的名值對結構,和值之間使用:連線,多個名值對之間使用,隔開
案例:
var obj = {
name:"劉德華",
age:50,
gender:"男",
friend:{name:"洗頭髮"}
};
console.log(obj.friend);