JavaScript 語法很不嚴謹,光宣告物件就有幾種寫法,譬如可以寫成:
var myObject=new Object();
myObject.myAttrib="ABC";
alert(myObject.myAttrib);
同樣效果,也可以寫成:
var myObject={};
myObject.myAttrib="123";
alert(myObject.myAttrib);
甚至在宣告物件時,同時也宣告屬性:
var myObject={
myAttrib:"456"
};
alert(myObject.myAttrib);
物件屬性可以是物件、陣列:
var hotel={
room:{
roomNo:"H203"
}
};
alert(hotel.room.roomNo); // H203
var hotel={
rooms:[{
roomNo:"H203"
},{
roomNo:"P130"
}
]
};
alert(hotel.rooms[1].roomNo); // P130
物件屬性甚至可以是個 function,在 javascript的世界裡,function 也是看成 object
var hotel={
reserveRoom:function(roomNo){
alert("Room No."+roomNo+" is reserved!");
}
};
hotel.reserveRoom("M093") ;
物件屬性除了以靜態方式宣告,也可以動態加入,我可以在宣告物件時只定義了一個屬性,程式執行期間動態加入其他新的屬性。
var hotel={
reserveRoom:function(roomNo){
alert("Room No."+roomNo+" is reserved!");
}
};
hotel.cancelReserve=function(roomNo){
alert("Room No."+roomNo+" reservation has be cancelled !");
}
hotel.reserveRoom("M093") ;
假如想加入的屬性名稱是動態組成的,譬如我想加入 myMethod1,myMethod2,myMethod3..myMethod10 共10個方法,可以這樣寫:
// 加入動態名稱的 function
var hotel={
};
for(var i=1;i<=10;i++){
hotel["myMethod"+i]=function() {
alert("myMethod is called!");
}
}
hotel.myMethod3() ;
hotel.myMethod8() ;
物件內屬性之間的調用,可用 this.$屬性名稱 的方式調用同個物件的其他屬性,
// 加入動態名稱的 function
var hotel={
name:'遠來大飯店',
welcome:function(){
alert("歡迎來到 "+this.name );
}
};
hotel.welcome()
以下是這次的範例程式,可以直接run哦。