1對(duì)象的創(chuàng)建

  • 對(duì)象字面量:通過(guò)新建一個(gè)鍵值對(duì)的集合(對(duì)象字面量)創(chuàng)建對(duì)象
  • 通過(guò)關(guān)鍵字new創(chuàng)建對(duì)象:
  • 通過(guò)工廠方法創(chuàng)建對(duì)象:通過(guò)函數(shù)創(chuàng)建對(duì)象,函數(shù)封裝了創(chuàng)建對(duì)象的過(guò)程,創(chuàng)建新對(duì)象時(shí)只需要調(diào)用該函數(shù)即可。這種方法適合于一次創(chuàng)建多個(gè)對(duì)象。
  • 使用構(gòu)造函數(shù)創(chuàng)建對(duì)象
    上面雖然也是通過(guò)函數(shù)創(chuàng)建對(duì)象,但不是構(gòu)造函數(shù),只是普通函數(shù)。構(gòu)造函數(shù)名必須以大寫(xiě)字母開(kāi)頭,函數(shù)體內(nèi)沒(méi)有返回語(yǔ)句。
  • 使用原型(prototype)創(chuàng)建對(duì)象:可以更改部分屬性的值。
  1. 屬性的增刪改查

    在Java中,當(dāng)實(shí)體類(lèi)建立以后,類(lèi)的屬性只能獲取與修改,不能增加與刪除。但是因?yàn)镴avaScript是動(dòng)態(tài)類(lèi)型的語(yǔ)言,JavaScript中對(duì)象的屬性具有增刪改查所有的操作。

    • 屬性獲取有兩種方式

    • 有兩種情況必須使用第二種方式:屬性名含有空格字符,如student["first name"],這時(shí)不能用student.first name代替,編譯器無(wú)法解釋后者;屬性名動(dòng)態(tài)生成,比如用for循環(huán)獲取前端連續(xù)id的值,這種id名之間一般有特定關(guān)系。

    • 刪除屬性:通過(guò)delete運(yùn)算符實(shí)現(xiàn)。刪除成功返回布爾型true,刪除失敗也是返回true。

      需要注意的是,對(duì)象只能刪除自己特有的屬性,而不能刪除繼承自原型對(duì)象的屬性。同時(shí),對(duì)象在刪除屬性時(shí),要防止刪除被其他對(duì)象繼承的屬性,因?yàn)檫@樣會(huì)導(dǎo)致程序出錯(cuò)。

  2. 屬性的檢測(cè)和枚舉

    • 屬性的檢測(cè):

      console.log("name" in school);	//輸出true
      
    • 枚舉屬性:

      for(var att in school){
      console.log(att);
      }
      
      Object.getOwnPropertyNames("枚舉的對(duì)象").join("")
      //join的作用是將數(shù)組中的所有元素連接成一個(gè)字符串,并可以指定一個(gè)分隔符。
      
      Object.keys("枚舉的對(duì)象")
      
  3. 數(shù)組元素的增減

    數(shù)組元素的增加

    • 在尾部添加元素,最直觀的方法是直接給當(dāng)前尾部元素的后一個(gè)位置賦值。

    • 第二種方法是使用push()函數(shù),往數(shù)組的末尾添加一個(gè)或多個(gè)元素,參數(shù)是要添加的元素,返回?cái)?shù)組長(zhǎng)度。

    • 在頭部添加元素
      unshift()方法在數(shù)組的頭部添加元素,并返回?cái)?shù)組新的長(zhǎng)度,其余元素自動(dòng)向索引大的方向移動(dòng)。

    數(shù)組元素的刪除 shift有刪除的意思

    • 在尾部刪除元素:直接修改數(shù)組長(zhǎng)度為更小的值

    • 使用delete運(yùn)算符。delete運(yùn)算符后接要?jiǎng)h除的元素,但是刪除后,會(huì)有一個(gè)空占位符,所以數(shù)據(jù)的長(zhǎng)度保持不變。

    • 使用pop(),一次刪除一個(gè),并返回被刪除的元素。

    • 在頭部刪除元素:shift()的作用是刪除數(shù)組頭部一個(gè)元素并返回該元素,然后所有元素往索引值小的方向移動(dòng)一位。