在JavaScript中創(chuàng)建一個object:
var objectName = {
objProperty1 : value,
objProperty2 : value,
objProperty3 : value,
};
說明: 用聲明變量的方法來聲明一個對象,等號右邊使用大括號包括,
并在里面填寫對象特有的屬性及方法,上面的小例子并沒有寫方法
【因為我還在屬性這個階段,不過,有了Java編程基礎之后,個人認為
繼續(xù)下去不難】,要細心留意的一點是:
屬性名 冒號 屬性值 逗號。
最后在整個代碼片段以分號結束。
創(chuàng)建一個沒有屬性的對象?
Just like :
var obj = {
// 不寫任何屬性。
};
我為什么要去創(chuàng)建一個空的對象?
靈活一點是嗎?
【問題】創(chuàng)建了空對象后,要如何去使用?-->> 添加屬性和刪除屬性
【回答】
var obj = {};
console.log("創(chuàng)建了一個空對象,現(xiàn)在測試開始...");
obj.color = "red";
obj.state = false;
console.log(obj.color + " " + obj.state);
console.log("刪除屬性state...");
delete obj.state;
console.log(obj.color + " " + obj.state);
直接給不存在的對象屬性賦值,便可以使用。<br>
對于一個不存在的對象屬性,直接訪問或?qū)⒌玫揭粋€undefined的結果。
<font color = red>刪除屬性刪除的是屬性本身,所以當屬性被刪除后,繼續(xù)訪問該屬性是錯誤的,不符合邏輯的。</font>
【問題】JS對象去訪問一個不存在的屬性會得到一個什么結果?
【回答】答:一個undefined的結果如果去訪問一個不存在的屬性。
【問題】在類中,如果我放了一個逗號在最后一個屬性后面,會發(fā)生什么結果?
【回答】_在大多瀏覽器中,一般都不會報錯,但是在版本較老的瀏覽器中可能會只執(zhí)行到它之前的語句。
【問題】我能通過console.log語句將一個object在控制臺console中顯示出來嗎?
【回答】Yes, you can.
<font color = red>一個變量并不能實際上地存儲一個對象object,而是存儲一個reference,指向object.</font>
我們現(xiàn)在知道創(chuàng)建一個對象可以通過```var obj = {...}```,
但是obj本身存儲的并不是這個對象```obj```本身,
而是一個指向```對象本身```的指針變量。
【問題】只要是一個對象,那么這個對象就可以擁有屬性和行為,然而,我們學會了如何為對象添加屬性,但是,要如何給對象添加行為behavior呢?
【回答】
var dog = {
color:yellow,
legs:4, // 注意屬性與屬性之間由逗號隔開
/* 下面為dog對象添加行為,我們可以看到,聲明function中,并沒有函數(shù)名,但是我們可以通過dog對象的shoutting屬性找到這個function */
shoutting : function () {
console.log("wang...wangwangwang....");
}
}
【說明】將對象屬性名與匿名函數(shù)綁在一起,就成為對象的方法了。
【問題】上面演示了如何為object,對象添加其本身的動作行為,那我們?nèi)绾蝸硎箤ο蟮男袨榧せ钅兀?br>
【回答】其實,這個就和Java語言很相似了,我們可以通過"."符號來使連接對象與function,話多無益,例子最實際,下面一起來看看吧!
var dog = {
color:yellow,
legs:4, // 注意屬性與屬性之間由逗號隔開
/* 下面為dog對象添加行為,我們可以看到,聲明function中,并沒有函數(shù)名,但是我們可以通過dog對象的shoutting屬性找到這個function */
shoutting : function () {
console.log("wang...wangwangwang....");
}
}
dog.shoutting(); // 通過"對象名.屬性名"來使對象動起來,其中屬性名也相當于是對象的方法名吧!
【說明】對象名.方法屬性名(),可以調(diào)用到對象的方法