javascript的簡單數(shù)據(jù)類型包括數(shù)字、字符串曹洽、布爾值鳍置、null和undefined。其他的所有值都是對象送淆。
- 對象是屬性的容器税产,每個(gè)屬性都有相應(yīng)的鍵值。屬性的名字可以是包括空字符串在內(nèi)的任意字符串偷崩,屬性值可以是除undefined值之外的任何值辟拷。
- javascript里的對象是無類型的。它對新屬性的名字和屬性的值沒有限制阐斜。對象可以包含其他對象衫冻,所以它們很容易的可以表示成樹狀或圖形結(jié)構(gòu)。
- javascript包含一種原型鏈的特性智听,允許對象繼承另外一個(gè)對象的屬性羽杰。
對象字面量
對象的字面量就是包裹在花括號里的零個(gè)或者多個(gè)鍵值對。如果屬性名是個(gè)合法的標(biāo)識符且不是保留字到推,則不需要強(qiáng)制使用引號考赛。
var empty_object = {}
var stooge = {
"first-name": "Jerome",
"last-name": "Howard",
age: 24
};
檢索
stooge["first-name"] // Jerome
stooge.age // 24
兩種檢索方式
- 使用[]
- 如果鍵是和合法的js標(biāo)識符那么可以使用 .
stooge["first-name"] || 'none'
stooge && stooge["first-name"]
可以用以上兩種方式設(shè)置默認(rèn)值或者防止對象不存在而拋錯(cuò)。
更新
stooge["first-name"] = 'JACK'
如果改屬性存在那么會(huì)更新莉测,否者會(huì)擴(kuò)充該屬性到對象中颜骤。
引用
對象是通過引用來傳遞的,所以它們永遠(yuǎn)不會(huì)被復(fù)制捣卤。
原型
- 每個(gè)對象都有一個(gè)原型對象忍抽,并且可以從中繼承屬性。所有通過對象字面量創(chuàng)建的對象都鏈接到Object.prototype董朝。
創(chuàng)建一個(gè)用原對象作為其原型對象的新對象
if (typeof Object.beget !== 'function') {
Object.create = function (o) {
var F = function () {};
F.prototype = o;
return new F();
}
}
- 在我們更新對象的時(shí)候鸠项,原型鏈不會(huì)發(fā)生變化。
- 原型鏈只有在檢索值得時(shí)候才會(huì)被用到子姜。如果在該對象檢索不到這個(gè)值 祟绊,那么就會(huì)到原型對象中去獲取。
反射
typeof 檢查對象類型
hasOwnProperty 查看對象是否擁有讀友的屬性。
枚舉
for in 遍歷對象所有的屬性名
刪除
delete stooge.age
delete 可以刪除對象的屬性