1. 程式人生 > >Javascript 第五章總結:A trip to Objectville

Javascript 第五章總結:A trip to Objectville

前言

在以前的程式碼中,我們使用 primitive 型別的變數和 procedural manner 來執行指令碼。但是,更好的辦法是 object-oriented (面向物件)的。作者說:它能讓我們 better in a programming sense,並且你不再想用原來的 procedural manner 的那種方法了。

什麼是 Object,什麼是 OO(Objective Oriented)?

Object的定義

JavaScript 中的 object 指的是: a collection of properties,這些 properties 中又包括它們的 name 和 value.

OO的定義

OO 指的是一種程式設計的思想,它包括兩個要素:state s和 behaviors。通過物件的特徵的引用來達到目的,而不是 procedual 那樣一步一步來。
引用:

Objects that have state (like a car might have an oil and fuel level), and behavior (like a car can be started, driven and stopped).

In objec-oriented programming, we think in terms of objects rather than procedures.

對於 OO 的好處,作者這樣表述:

object-oriented programming allows you to free your mind to think at a higher level.

Javascript 中的 object [state部分]

定義一個 object

格式:

  1. 開頭有 var declaration 和 object 的名字
  2. 接下來各種 property 包含在 { } 中
  3. 每個 property 包含name:value,的格式
  4. 在 } 別忘了加 ;

範例:

基本操作

  1. 通過 dot notation 來 access a property,或者通過["nameOfProperty"]來達到目的,範例如:chevy.color 和 chevy['color']
  2. 改變 property 可以採用賦值的方式
  3. 增加一個新 property 可以採用賦值的方式
  4. 可以用 delete operator刪除一個 property,格式:delete fido.dogYears.
    ###object 的實質
    object 的 var 型別實際上表表明了這是類似於 pointer 的儲存著 reference 的值。
    因此,在函式進行傳遞的時候,由於傳遞的是地址, 所以在函式中處理的是 same object,因此在函式中的命令會改變它的值。

Javascript 中的 object [behavoir部分]

在 object 中新增函式

格式:先寫一個 name,然後再寫函式部分:function(parameter){}
範例:

state 和 behavior 之間的關係

Have you also notice these two interact? Like, we can't start a car if it doesn't have fuel, and the amount of fuel should get reduced as we drive the car. Kinda like read life, right?

使用關鍵字:this

在 object 中,value 和 behavoir 是相互影響的,因此當我們需要在 object 中的 behavior 呼叫 object 中的 value。
呼叫的方法是使用 this 這個 keyword. 表示 這個函式所在的 object 中的這個值,因此它是相對的。
格式:this.nameOfproperty

使用 for-in 用來iterate throngh an object's properties

格式:for (var .. in nameOfObject){
block;}
範例:for (var prop in chevy) {
console.log(...)
}