JavaScript 中的所有事物都是對象:字符串、數值、數組、函數...……
所有事物都是對象
JavaScript 提供多個內建對象,比如 String、Date、Array 等等。 對象只是帶有屬性和方法的特殊數據類型。
- 布爾型可以是一個對象。
- 數字型可以是一個對象。
- 字符串也可以是一個對象
- 日期是一個對象
- 數學和正則表達式也是對象
- 數組是一個對象
- 甚至函數也可以是對象
JavaScript對象
對象只是一種特殊的數據。對象擁有屬性和方法。
訪問對象屬性
屬性是與對象相關的值。
訪問對象屬性的語法是:
objectName.propertyName
這個例子使用了 String 對象的 length 屬性來獲得字符串的長度:
var message="Hello World!"; var x=message.length;
在以上代碼執行后,x 的值將是12
訪問對象的方法
方法是能夠在對象上執行的動作。
您可以通過以下語法來調用方法:
objectName.methodName()
這個例子使用了 String 對象的 toUpperCase() 方法來將文本轉換為大寫:
var message="Hello world!"; var x=message.toUpperCase();
在以上代碼執行后,x 的值將是:
HELLO WORLD!
創建 JavaScript 對象
通過 JavaScript,您能夠定義並創建自己的對象。
創建新對象有兩種不同的方法:
- 使用 Object 定義並創建對象的實例。
- 使用函數來定義對象,然后創建新的對象實例。
使用 Object
在 JavaScript 中,幾乎所有的對象都是 Object 類型的實例,它們都會從 Object.prototype 繼承屬性和方法。
Object 構造函數創建一個對象包裝器。
Object 構造函數,會根據給定的參數創建對象,具體有以下情況:
- 如果給定值是 null 或 undefined,將會創建並返回一個空對象。
- 如果傳進去的是一個基本類型的值,則會構造其包裝類型的對象。
- 如果傳進去的是引用類型的值,仍然會返回這個值,經他們復制的變量保有和源對象相同的引用地址。
- 當以非構造函數形式被調用時,Object 的行為等同於 new Object()。
語法格式:
// 以構造函數形式來調用 new Object([value])
value 可以是任何值。
以下實例使用 Object 生成布爾對象:
// 等價於 o = new Boolean(true); var o = new Object(true);
注意:
new 和不 new的區別:
- 如果 new 了函數內的 this 會指向當前這個 person 並且就算函數內部不 return 也會返回一個對象。
- 如果不 new 的話函數內的 this 指向的是 window。
function person(firstname,lastname,age,eyecolor) { this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; return [this.firstname,this.lastname,this.age,this.eyecolor,this] } var myFather=new person("John","Doe",50,"blue"); var myMother=person("Sally","Rally",48,"green"); console.log(myFather) // this 輸出一個 person 對象 console.log(myMother) // this 輸出 window 對象