Javascript 面向?qū)ο?對(duì)象(Object)
更新時(shí)間:2010年05月13日 17:22:58 作者:
Javascript 面向?qū)ο?對(duì)象(Object)
javascript中的對(duì)象創(chuàng)建聲明:
var obj = {}; 或者 var obj = new Object();
為對(duì)象加入屬性,方法:
//=====第一種寫法====================================
obj.name = '小明'; //為對(duì)象加屬性
obj.updateName = function(name){//為對(duì)象定義updateName方法
this.name = name;
}
alert(obj.name);
obj.updateName("小強(qiáng)"); //調(diào)用updateName修改obj對(duì)象的name屬性值
alert(obj['name']);
第一次顯示結(jié)果為:小明
第二次顯示結(jié)果為:小強(qiáng)
//=====第二種寫法====================================
obj['name'] = '張三'; //為對(duì)象加屬性
obj['updateName'] = function(name){//為對(duì)象定義updateName方法
obj['name'] =name;
};
alert(obj.name);
obj.updateName('李四'); //調(diào)用updateName修改obj對(duì)象的name屬性值
alert(obj['name']);
第一次顯示結(jié)果為:張三
第二次顯示結(jié)果為:李四
//=====第三種寫法====================================
var obj = {
name: '王五', //為對(duì)象加屬性
updateName: function(name){//為對(duì)象定義updateName方法
this.name = name;
}
};
alert(obj .name);
obj.updateName("趙六"); //調(diào)用updateName修改obj對(duì)象的name屬性值
alert(obj .name);
第一次顯示結(jié)果為:王五
第二次顯示結(jié)果為:趙六
//=====分析=====================================
第一種寫法是最普通的對(duì)象寫法,因?yàn)閖avascript是動(dòng)態(tài)語言,與Java和.Net不同,
在程序運(yùn)行并創(chuàng)建對(duì)象后,還可以對(duì)該對(duì)象的內(nèi)部結(jié)構(gòu)進(jìn)行修改,
比如添加屬性和方法(java和.net中的反射機(jī)制做不到這點(diǎn))。
(a): var obj = {} || new Object();
(b):obj.name = "張三";
(c):obj.updateName = function(name){ this.name = name};
當(dāng)程序執(zhí)行(a) 后,便創(chuàng)建了一個(gè)空對(duì)象(不包含任何方法和屬性)obj,
當(dāng)程序執(zhí)行(b) 后,改變了obj的內(nèi)部結(jié)構(gòu),加了一個(gè)屬性name,
當(dāng)程序執(zhí)行(c) 后,改變了obj的內(nèi)部結(jié)構(gòu),加了一個(gè)方法updateName ,
而這都是在運(yùn)行的時(shí)候完成的動(dòng)作
第二種寫法像數(shù)組,但絕不是數(shù)組,區(qū)分是不是數(shù)組可以如此判斷:
if(typeof(obj.length) == "undefined") {
alert("obj不是數(shù)組,數(shù)組都有l(wèi)ength屬性!");
}else{
alert("obj是數(shù)組!");
}
第二種寫法更像一種數(shù)據(jù)結(jié)構(gòu):map ,如:obj[key] = value;
key是字符串,value可以是任何類型,變量,對(duì)象,函數(shù)等。
可以通過這種方式遍歷對(duì)象內(nèi)部結(jié)構(gòu):
for(var key in obj)
{
alert(key);
var value = obj[key];
alert(value);
}
通過alert可以顯示出你所定義的內(nèi)容。
第三種寫法一看就是map的內(nèi)部結(jié)構(gòu)了,一個(gè)對(duì)象,內(nèi)部完全用key : value鍵值對(duì)方式表示
JSON對(duì)象也是這種結(jié)構(gòu),只要對(duì)map或者JSON對(duì)象有所熟悉的就很容易理解了。
var obj = {}; 或者 var obj = new Object();
為對(duì)象加入屬性,方法:
//=====第一種寫法====================================
obj.name = '小明'; //為對(duì)象加屬性
obj.updateName = function(name){//為對(duì)象定義updateName方法
this.name = name;
}
alert(obj.name);
obj.updateName("小強(qiáng)"); //調(diào)用updateName修改obj對(duì)象的name屬性值
alert(obj['name']);
第一次顯示結(jié)果為:小明
第二次顯示結(jié)果為:小強(qiáng)
//=====第二種寫法====================================
obj['name'] = '張三'; //為對(duì)象加屬性
obj['updateName'] = function(name){//為對(duì)象定義updateName方法
obj['name'] =name;
};
alert(obj.name);
obj.updateName('李四'); //調(diào)用updateName修改obj對(duì)象的name屬性值
alert(obj['name']);
第一次顯示結(jié)果為:張三
第二次顯示結(jié)果為:李四
復(fù)制代碼 代碼如下:
//=====第三種寫法====================================
var obj = {
name: '王五', //為對(duì)象加屬性
updateName: function(name){//為對(duì)象定義updateName方法
this.name = name;
}
};
alert(obj .name);
obj.updateName("趙六"); //調(diào)用updateName修改obj對(duì)象的name屬性值
alert(obj .name);
第一次顯示結(jié)果為:王五
第二次顯示結(jié)果為:趙六
//=====分析=====================================
第一種寫法是最普通的對(duì)象寫法,因?yàn)閖avascript是動(dòng)態(tài)語言,與Java和.Net不同,
在程序運(yùn)行并創(chuàng)建對(duì)象后,還可以對(duì)該對(duì)象的內(nèi)部結(jié)構(gòu)進(jìn)行修改,
比如添加屬性和方法(java和.net中的反射機(jī)制做不到這點(diǎn))。
(a): var obj = {} || new Object();
(b):obj.name = "張三";
(c):obj.updateName = function(name){ this.name = name};
當(dāng)程序執(zhí)行(a) 后,便創(chuàng)建了一個(gè)空對(duì)象(不包含任何方法和屬性)obj,
當(dāng)程序執(zhí)行(b) 后,改變了obj的內(nèi)部結(jié)構(gòu),加了一個(gè)屬性name,
當(dāng)程序執(zhí)行(c) 后,改變了obj的內(nèi)部結(jié)構(gòu),加了一個(gè)方法updateName ,
而這都是在運(yùn)行的時(shí)候完成的動(dòng)作
第二種寫法像數(shù)組,但絕不是數(shù)組,區(qū)分是不是數(shù)組可以如此判斷:
復(fù)制代碼 代碼如下:
if(typeof(obj.length) == "undefined") {
alert("obj不是數(shù)組,數(shù)組都有l(wèi)ength屬性!");
}else{
alert("obj是數(shù)組!");
}
第二種寫法更像一種數(shù)據(jù)結(jié)構(gòu):map ,如:obj[key] = value;
key是字符串,value可以是任何類型,變量,對(duì)象,函數(shù)等。
可以通過這種方式遍歷對(duì)象內(nèi)部結(jié)構(gòu):
復(fù)制代碼 代碼如下:
for(var key in obj)
{
alert(key);
var value = obj[key];
alert(value);
}
通過alert可以顯示出你所定義的內(nèi)容。
第三種寫法一看就是map的內(nèi)部結(jié)構(gòu)了,一個(gè)對(duì)象,內(nèi)部完全用key : value鍵值對(duì)方式表示
JSON對(duì)象也是這種結(jié)構(gòu),只要對(duì)map或者JSON對(duì)象有所熟悉的就很容易理解了。
您可能感興趣的文章:
相關(guān)文章
javascript 混合的構(gòu)造函數(shù)和原型方式,動(dòng)態(tài)原型方式
JS編程中最常用兩種對(duì)象類定義的方式。不管是利用下面2種方式的那一種,都可以達(dá)到相同的效果!2009-12-12
javascript 面向?qū)ο缶幊? function是方法(函數(shù))
在進(jìn)行編程時(shí),必免不了要碰到復(fù)雜的功能。初學(xué)者最怕復(fù)雜的功能,因?yàn)椴荒軌蚝芎玫倪M(jìn)行功能邊界劃分,只能一大串if、循環(huán)加case堆疊在一起,結(jié)果出來的程序自己看著暈,別人看著更暈。2009-09-09
JavaScript 工具庫 Cloudgamer JavaScript Library v0.1 發(fā)布
研究了一年多的js,也差不多寫一個(gè)自己的js庫了。 我寫這個(gè)不算框架,只是一個(gè)小型的js工具庫,所以我用的名字是Library。2009-10-10
面向?qū)ο蟮木幊趟枷朐趈avascript中的運(yùn)用上部
對(duì)于正在從事或者打算從事編程的人來說,面向?qū)ο笫且粋€(gè)耳熟能詳?shù)脑~,幾乎每一個(gè)人都能列舉出一些面向?qū)ο蟮木幊陶Z言,例如C++,JAVA,C#等等。2009-11-11
學(xué)習(xí)面向?qū)ο笾嫦驅(qū)ο蟮男g(shù)語
學(xué)習(xí)面向?qū)ο笾嫦驅(qū)ο蟮男g(shù)語,學(xué)習(xí)面向?qū)ο笤O(shè)計(jì)的朋友可以參考下。2010-11-11

