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
格式:
- 開頭有 var declaration 和 object 的名字
- 接下來各種 property 包含在 { } 中
- 每個 property 包含
name:value,
的格式 - 在 } 別忘了加 ;
範例:
基本操作
- 通過 dot notation 來 access a property,或者通過["nameOfProperty"]來達到目的,範例如:chevy.color 和 chevy['color']
- 改變 property 可以採用賦值的方式
- 增加一個新 property 可以採用賦值的方式
- 可以用 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(...)
}