一、什麼叫JavaScript對象?html
定義:名值對的集合。簡單的講就是容納屬性值和屬性值的容器,這些屬性能夠是無序的,基本上JavaScript中全部的事物均可以當作對象。面試
拓展:咱們常常說,數組也是對象,那麼,咱們從對象定義中名值對的角度看,數組與普通的對象相比,他的名值對是由順序的而已,即每個arry[i]對應着固定的數值,因此,能夠說,數組是特殊的對象,特殊就特殊在他的名值對是有序的,如今再看數組是否是簡單多了呢?正則表達式
二、建立對象 的四種方法:數組
分別爲:函數
①對象字面量法;②new關鍵字建立法;③構造函數法;④ES5提供的Object.creat()方法;code
①對象字面量法:htm
建立方法:對象
var school={name:'cumt',blog
'first-road':'大學路',ip
Iscollege:true,
students:50000,
};
須要注意的幾個點:
一、屬性名若是是以數字開頭,則屬性名必須加上單引號或者雙引號;若是屬性名中包含JavaScript的保留字或者非法字符(-等字符)必需要加單引號或者雙引號。其餘狀況能夠沒必要加單引號或者雙引號。
二、屬性值若是是字符串,則屬性值必加單引號或者雙引號;若是屬性值是數字、布爾值、undefined、NaN或者null則能夠不用加引號。
三、屬性之間分隔用逗號分開,而不是用分號(切記)。
②經過var關鍵字和new關鍵字建立對象:
建立方法:
var person=new Object(){name:'josn',
sex:male,
'girl-friend':lily,
hometown:'江蘇',
};
③構造函數法:
var preson=function(){name:'AJax',
valuble:true,
times:'often',
};
說明:
一、前面說到數組是特殊的對象,那麼在這兒,聰明的你們確定早就看出來了,函數它也是對象,其實仔細想一想:函數是一種對象,而咱們卻能夠利用函數來定義一個對象,乍一聽,咋感受這麼像數學裏面的充分必要的關係,但實際上用這種關係解釋他們是解釋不通的也是不必的,只要理解:函數是一種對象,經過函數能夠構造對象,這就夠了。關於函數的總結稍後會在下一貼隨筆中細說。
二、既然第一條說到了JavaScript的對象,我們就來理一理JavaScript中到底有多少內置對象(面試的時候在這個問題上栽過一回,當時就問蒙了,只零零散散的回答了一部分):JavaScript中的內置對象有17個之多,經常使用的是Array對象、Date對象、Regexp(正則表達式)對象、String對象、Global對象 ,Object對象,Arguments對象,Boolean對象,Error對象,Function對象,Math對象,Number對象等,具體的內置對象使用方法請參照:https://www.cnblogs.com/Arther-J/p/5388633.html
④經過Object.create()方法建立對象:
在ES5中,提供了一種建立對象的新方法:經過Object.create()建立對象,使用方法以下:
var dream=Object.create({owner:'mine',
distance:'step',
method:'天助自助者',
});
三、對象屬性的訪問、添加、修改、刪除、遍歷操做方法
通例:
var obj={name:'攻城獅',
age:18,
sex:'male',
hobby:'fishing',
};
①對象屬性的訪問:
方法爲:訪問對象的屬性時,方法有兩種:對象名.屬性名 或者 對象名.['屬性名'] 不管是用 點 的形式仍是方括號的形式都是能夠的,至於這倆有啥區別,待會兒咱在慢慢扯。
例:我要獲得obj這個對象中的age屬性的屬性值,我能夠這樣寫:console.log(obj.age);
固然我也能夠這樣寫:console.log(obj['age']);
獲得的結果是同樣的,都是 18.
②添加對象的屬性:
例:咱們想要給上面的obj對象中添加一個sayhi的屬性,咱們能夠這樣作:
obj.sayhi='hello';
訪問:console.log(obj.sayhi); 結果爲:hello
③修改對象的屬性值:
修改對象屬性值其實就是對對象屬性值進行新的賦值,若是對象中這個屬性原來就存在,咱們稱之爲修改屬性值,那麼若是這個屬性原來在對象中壓根就沒有,那麼這就是上面剛剛說的添加對象的屬性。
例如:咱們如今想把obj的sex屬性名的值換成female,咱們能夠這麼寫:
obj.sex='female';
至關於從新給sex屬性名賦了一個值
這個時候咱們再訪問:console.log(obj.sex);就會發現結果變成了 female
④刪除對象的屬性:
咱們若是想要刪除對象中原來存在的某個屬性,JavaScript提供的方法是delete
例如,咱們如今想把上面obj的hobby的屬性刪掉
在刪掉以前呢,咱們先來訪問一下obj的屬性,看看他的結果,方便和刪除後作對比
console.log(obj.hobby); 結果正如你們所預料的,是 fishing
那,咱們來刪除hobby屬性,方法是:
delete obj.hobby;
這會兒咱再來訪問:
console.log(obj.hobby); 就會發現結果變成了 undefined,咱們刪除了hobby屬性,訪問了一個不存在的屬性,結果天然是undefined
⑤遍歷對象的屬性:
遍歷 JavaScript 對象中的屬性沒有其餘語言那麼簡單,由於兩個因素會影響屬性的遍歷:對象屬性的屬性描述符 (property descriptor) 的 [[Enumerable]]
特性爲 true
(可枚舉)才能被 for-in
訪問;若是在對象自己沒有找到屬性,接下來會在原型鏈上查找,訪問屬性時會沿着整個原型鏈從下到上查找屬性。因此說遍歷屬性時,要考慮這兩個因素。
下面咱們就來試試,使用for..in取出obj對象中的所有自有屬性和屬性值:
var x;
for(x in obj){
document.write(i+':'+house[i]+';<br/>');
};
結果爲:
name:攻城獅;
age:18;
sex:female;
sayhi:hello;
寫在末尾:
本篇關於對象的知識總結都是些比較基礎的東西,適合於初學者,但願各位前輩、高手、老師指點分享經驗和見解,也歡迎在評論區交流見解。