和 Delphi/C# 類似, JavaScript 中所有對象的祖先是 Object, 雖然並不是全部物件導向的, 好像也是基於對象的.
譬如一個字串類型(string)變數, 可以使用字串對象(String)的屬性和方法, 那是在調用的一瞬間轉換成了對象.
建立原始Null 物件的兩種方法
var obj1, obj2;obj1 = new Object();obj2 = {};alert(obj1); // [object Object] - 屬於 Object 類的 objectalert(obj2); // [object Object]//上面兩種方法建立的對象都可以使用以下六個方法(不如說是抽象方法):hasOwnPropertyisPrototypeOfpropertyIsEnumerabletoLocaleStringtoStringvalueOf//Object 像不像個介面? 像也不像, 因為以上方法它並不強迫子類實現.//現在應該讓人立馬想起空數組的兩種建立方法:var arr1, arr2;arr1 = new Array();arr2 = [];//Array 作為 Object 的子類, 繼承或重新實現了上面方法, 並且增加了 sort 等更多數組專用的方法.//一個是 {}、 一個是 [], 很有意思; 更有意思的是它們可以互相包含.
定義自己的對象
//已存在 Array、Number、Date、RegExp 等實用的類(或叫對象模板), 如果構建自己的類呢?//很簡單, 但不好理解:function Rectangle(w, h) { this.w = w; this.h = h;}/* 執行個體化一個 */var myObj = new Rectangle(11, 22);alert(myObj.w); //11alert(myObj.h); //22alert(myObj); // [object Object]//可以看出 myObj 就是一個對象了; 在 js 中函數也是對象, 並且有一個 Function 類存在.//可以在 Rectangle(函數? 類?) 的基礎上繼續添加更多方法或屬性, 這是後話.
JavaScript Object Notation - json
//js 用 {} 標識對象的方法(JavaScript Object Notation)被簡稱為 json;//說到 json, 佩服其的設計者, 本來是語言中描述對象的一種規則, 現在竟被推崇為超越 XML 的資料格式.var obj = {name:'張三', age:88, marriage:true};//{} 中的資料用 , 號隔開, 每個資料又是 Name : Value 的形式;// : 前面的標識符是比不可少的, 它將是對象的屬性或方法等, 它也可以在引號中, 也支援中文./* 訪問 Value 方法一 */alert(obj.name); //張三alert(obj.age); //88alert(obj.marriage); //true/* 訪問 Value 方法二 */alert(obj['name']); //張三alert(obj['age']); //88alert(obj['marriage']); //true/* 遍曆 Value */for (var k in obj) { alert(obj[k]); //張三 / 88 / true}/* 遍曆 Name */for (var k in obj) { alert(k); //Name / age / marriage}//對象還可以繼續包含對象, 再連同數組互相嵌套, 因而 json 能表達非常複雜的資料結構.
給自訂的類添加方法
var obj = { name : '張三', age : 88, marriage: false, info: function() {return this.name + '今年 ' + this.age + ' 歲, ' + (this.marriage ? '已經結婚了.' : '至今未婚.')}};alert(obj.info()); //張三今年 88 歲, 至今未婚.alert(obj['info']()); //張三今年 88 歲, 至今未婚.obj.name = '李四';obj.age = 18;obj.marriage = true;alert(obj.info()); //李四今年 18 歲, 已經結婚了.//還有其他方法, 後續.