var myObject = new Object(); // 創建沒有屬性的通用對象。 var myBirthday = new Date(1961, 5, 10); // 創建一個 Date 對象。 var myCar = new Car(); // 創建一個用戶定義的對象,并初始化其屬性。 通過構造函數將一個參數作為特定的 this 要害字的值傳遞給新創建的空對象。然后構造函數負責為新對象執行適應的初始化(創建屬性并給出其初始值)。完成后,構造函數返回它所構造的對象的一個參數。
編寫構造函數 可以使用 new 運算符結合像 Object()、Date() 和 Function() 這樣的預定義的構造函數來創建對象并對其初始化。面向對象的編程其強有力的特征是定義自定義構造函數以創建腳本中使用的自定義對象的能力。創建了自定義的構造函數,這樣就可以創建具有已定義屬性的對象。下面是自定義函數的示例(注重 this 要害字的使用)。
function Circle (XPoint, yPoint, radius) { this.x = xPoint; // 圓心的 x 坐標。 this.y = yPoint; // 圓心的 y 坐標。 this.r = radius; // 圓的半徑。 } 調用 Circle 構造函數時,給出圓心點的值和圓的半徑(所有這些元素是完全定義一個獨特的圓對象所必需的)。結束時 Circle 對象包含三個屬性。下面是如何例示 Circle 對象。
var aCircle = new Circle(5, 11, 99); 使用原型來創建對象 在編寫構造函數時,可以使用原型對象(它本身是所有構造函數的一個屬性)的屬性來創建繼續屬性和共享方法。原型屬性和方法將按引用復制給類中的每個對象,因此它們都具有相同的值??梢栽谝粋€對象中 更改原型屬性的值,新的值將覆蓋默認值,但僅在該實例中有效。屬于這個類的其他對象不受此更改的影響。下面給出了使用自定義構造函數的示例,Circle(注重 this 要害字的使用)。
Circle.PRototype.pi = Math.PI; function ACirclesArea () { return this.pi * this.r * this.r; // 計算圓面積的公式為 ?r2。 } Circle.prototype.area = ACirclesArea; // 計算圓面積的函數現在是 Circle Prototype 對象的一個方法。 var a = ACircle.area(); // 此為如何在 Circle 對象上調用面積函數。 使用這個原則,可以給預定義的構造函數(都具有原型對象)定義附加屬性。例如,假如想要能夠刪除字符串的前后空格(與 VBScript 的 Trim 函數類似),就可以給 String 原型對象創建自己的方法。
var aCentaur = "a horse with rider,"; // aCentaur 的全局定義。
// JScript 代碼,為簡潔起見有省略。 function antiquities() // 在這個函數中聲明了一個局部 aCentaur 變量。 {
// JScript 代碼,為簡潔起見有省略。 var aCentaur = "A centaur is probably a mounted Scythian warrior";
// JScript 代碼,為簡潔起見有省略。 aCentaur += ", misreported; that is, "; // 添加到局部變量。
// JScript 代碼,為簡潔起見有省略。 } // 函數結束。
var nothinginparticular = antiquities(); aCentaur += " as seen from a distance by a naive innocent.";
/* 在函數內,該變量的值為 "A centaur is probably a mounted Scythian warrior, misreported; that is, ";在函數外,該變量的值為這句話的其余部分: "a horse with rider, as seen from a distance by a naive innocent." */ 很重要的一點是注重變量是否是在其所屬范圍的開始處聲明的。有時這會導致意想不到的情況。
tweak(); var aNumber = 100; function tweak() { var newThing = 0; // 顯式聲明 newThing 變量。