用 new Object() 來創建對象
在javascript里有幾種創建對象的方法,在不同的場合可用不同的方法.最簡單的就是用 new 操作符,例如:
代碼如下:<script language="javascript" type="text/javascript">
<!--
person = new Object()
person.name = "Tim Scarfe"
person.height = "6Ft"
person.run = function() {
this.state = "running"
this.speed = "4ms^-1"
}
//-->
</script>
我們在這個例子里定義了person這個對象,然后加入了它的屬性和方法.在這個例子里,自定義的方法里有兩個屬性.
用文字記號Literal Notation創建對象
用文字記號也可以創建對象,但要javascript 1.2以上版本.它的創建形式是多樣的.
代碼如下:<script language="javascript" type="text/javascript">
<!--
// Object Literals
timObject = {
property1 : "Hello",
property2 : "MmmMMm",
property3 : ["mmm", 2, 3, 6, "kkk"],
method1 : function(){alert("Method had been called" + this.property1)}
};
timObject.method1();
alert(timObject.property3[2]) // will yield 3
var circle = { x : 0, y : 0, radius: 2 } // another example
// nesting is no problem.
var rectangle = {
upperLeft : { x : 2, y : 2 },
lowerRight : { x : 4, y : 4}
}
alert(rectangle.upperLeft.x) // will yield 2
//-->
</script>
文字記號可是是數組,也可以是任意的javascript表達式或值.
用 new 操作符或文字記號創建一個自定義對象都是簡單的,也是符合邏輯的.但它最大的缺點就是結果不可復用.也不能很容易的用不同的版本初始化創建對象.例如上面 的第一個例子,如果 person 的 name 不是 "Tim Scarfe",那樣我們不得不重新定義整個對象,僅僅為了適應它的一點點改變.
對象的構造和原型
在OOP的世界里,用先前的方法定義對象在許多場合都有限制.我們需要一種創建對象的方法,類型可以被多次使用而不用重新定義.對象在實例化時每次都可以按需分配不同的值.實現這個目標的標準方法是用對象構造器函數.
一個對象構造器只不過是個有規則的javascript函數,它就象一個容器(定義參數,調用其他函數等等).它們兩者所不同的是構造器函數是由 new 操作符調用的.(你將在下面的例子中看到).基于函數語法形式的對象定義,我們可以使它工作得最好.