javascript中的對象建立聲明:
var obj = {}; 或者 var obj = new Object();
為對象加入屬性,方法:
//=====第一種寫法====================================
obj.name = '小明'; //為對象加屬性
obj.updateName = function(name){//為對象定義updateName方法
this.name = name;
}
alert(obj.name);
obj.updateName("小強"); //調用updateName修改obj對象的name屬性值
alert(obj['name']);
第一次顯示結果為:小明
第二次顯示結果為:小強
//=====第二種寫法====================================
obj['name'] = '張三'; //為對象加屬性
obj['updateName'] = function(name){//為對象定義updateName方法
obj['name'] =name;
};
alert(obj.name);
obj.updateName('李四'); //調用updateName修改obj對象的name屬性值
alert(obj['name']);
第一次顯示結果為:張三
第二次顯示結果為:李四
//=====第三種寫法====================================
var obj = {
name: '王五', //為對象加屬性
updateName: function(name){//為對象定義updateName方法
this.name = name;
}
};
alert(obj .name);
obj.updateName("趙六"); //調用updateName修改obj對象的name屬性值
alert(obj .name);
第一次顯示結果為:王五
第二次顯示結果為:趙六
//=====分析=====================================
第一種寫法是最普通的對象寫法,因為javascript是動態語言,與Java和.Net不同,
在程式運行並建立對象後,還可以對該對象的內部結構進行修改,
比如添加屬性和方法(java和.net中的反射機製做不到這點)。
(a): var obj = {} || new Object();
(b):obj.name = "張三";
(c):obj.updateName = function(name){ this.name = name};
當程式執行(a) 後,便建立了一個Null 物件(不包含任何方法和屬性)obj,
當程式執行(b) 後,改變了obj的內部結構,加了一個屬性name,
當程式執行(c) 後,改變了obj的內部結構,加了一個方法updateName ,
而這都是在啟動並執行時候完成的動作
第二種寫法像數組,但絕不是數組,區分是不是數組可以如此判斷:
if(typeof(obj.length) == "undefined") {
alert("obj不是數組,數組都有length屬性!");
}else{
alert("obj是數組!");
}
第二種寫法更像一種資料結構:map ,如:obj[key] = value;
key是字串,value可以是任何類型,變數,對象,函數等。
可以通過這種方式遍曆對象內部結構:
for(var key in obj)
{
alert(key);
var value = obj[key];
alert(value);
}
通過alert可以顯示出你所定義的內容。
第三種寫法一看就是map的內部結構了,一個對象,內部完全用key : value索引值對方式表示
JSON對象也是這種結構,只要對map或者JSON對象有所熟悉的就很容易理解了。