1. 程式人生 > >06-javaScript基礎-物件

06-javaScript基礎-物件

文章配套視訊

辨別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);