JavaScript對象基礎知識總結

一、什麼叫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;

寫在末尾:

本篇關於對象的知識總結都是些比較基礎的東西,適合於初學者,但願各位前輩、高手、老師指點分享經驗和見解,也歡迎在評論區交流見解。

相關文章
相關標籤/搜索