學(xué)做面包的網(wǎng)站網(wǎng)站推廣公司排行榜
目錄
任務(wù)描述
相關(guān)知識(shí)
屬性的獲取
方式一
方式二
屬性的修改與新增
刪除屬性
編程要求
任務(wù)描述
Luma Restaurant 以前的財(cái)務(wù)人員在統(tǒng)計(jì)銷售額的時(shí)候不小心把數(shù)據(jù)弄錯(cuò)了,現(xiàn)在的財(cái)務(wù)人員想通過一個(gè) JavaScript 函數(shù)方便的修改數(shù)據(jù),并署上自己的名字,請你幫助她完成這個(gè)任務(wù)吧! ? 本關(guān)任務(wù):根據(jù)本小結(jié)內(nèi)容,完成 JavaScript 對(duì)象屬性值的獲取和修改。
相關(guān)知識(shí)
在 Java 中,當(dāng)實(shí)體類建立以后,類的屬性只能獲取與修改,不能增加與刪除。但是因?yàn)?JavaScript 是動(dòng)態(tài)類型的語言,JavaScript 中對(duì)象的屬性具有增刪改查所有的操作。
屬性的獲取
方式一
屬性的獲取有兩種方式,一種是使用.
符號(hào),符號(hào)左側(cè)是對(duì)象的名字,符號(hào)右側(cè)是屬性的名字,如下:
var student = {name:"Alice",gender:"girl"};
console.log(student.name); // 輸出Alice
這種情況下屬性名必須是靜態(tài)的字符串,即不能是通過計(jì)算或者字符串的拼接形成的字符串。
方式二
另外一種是使用[""]
符號(hào),符號(hào)的左邊是對(duì)象的名字,雙引號(hào)中間是屬性的名字,這種情況下屬性名可以是一個(gè)表達(dá)式,只要表達(dá)式的值是一個(gè)字符串即可。如下:
var student = {name:"Alice",gender:"girl"};
console.log(student["name"]); / /輸出Alice
有兩種情況必須使用第二種方式:
-
屬性名含有空格字符,如
student["first name"]
,這時(shí)不能用student.first name
代替,編譯器無法解釋后者; -
屬性名動(dòng)態(tài)生成,比如用
for
循環(huán)獲取前端連續(xù) id 的值,這種 id 名之間一般有特定關(guān)系。如下面的例子:for(int i = 0;i < 5;i ++) {console.log(student["id"+i]); }
屬性的修改與新增
屬性的修改指修改已有屬性的值,這個(gè)直接用賦值符號(hào)即可。 ? 屬性的新增與修改在形式上完全相同,區(qū)別僅在于編譯器會(huì)根據(jù)屬性的名字判斷是否有該屬性,有則修改,沒有則新增。
var student = {name:"Kim",age:21
};
student.age = 20;//修改屬性,覆蓋了原來的值21
student.gender = "female";//新增屬性gender
刪除屬性
JavaScript 中的屬性還可以刪除,這在其他的面向?qū)ο笳Z言如 Java 或者 C++ 中是無法想象的,刪除通過delete
運(yùn)算符實(shí)現(xiàn)。刪除成功返回布爾型true
,刪除失敗也是返回true
,所以在刪除之前需要判斷一個(gè)屬性是否存在,這個(gè)內(nèi)容將在下一關(guān)講解。
需要注意的是,對(duì)象只能刪除自己特有的屬性,而不能刪除繼承自原型對(duì)象的屬性。同時(shí),對(duì)象在刪除屬性時(shí),要防止刪除被其他對(duì)象繼承的屬性,因?yàn)檫@樣會(huì)導(dǎo)致程序出錯(cuò)。
var Store = new Object();
Store.name = "lofo Market";
Store.location = "NO.13 Five Avenue";
console.log(delete Store.name); // 刪除成功,輸出true
console.log(Store.name); // 已刪除,返回undefined
delete Store.prototype; // 刪除失敗,非自有屬性
編程要求
請補(bǔ)全右側(cè) Begin 和 End 之間的代碼片段,使函數(shù)reviseAttribute(reviser,date,attvalue)
具備根據(jù)傳入?yún)?shù)修改store
對(duì)象的屬性的功能,具體要求如下:
- 如果調(diào)用函數(shù)
reviseAttribute(reviser,date,attvalue)
并傳入值?Alice,1,1000
那么對(duì)應(yīng)store
的day1
屬性的值就修改為 1000,accountant
屬性的值修改為Alice
;var store = {name:"Luma Restaurant",location:"No 22,Cot Road",accountant:"Vivian Xie",day1:3200,day2:3200,day3:3200,day4:3200,day5:3200,day6:3200,day7:3200,day8:3200,day9:3200,day10:3200 } function reviseAttribute(reviser,date,attValue) {//Convert string to integerattValue = parseInt(attValue);//請?jiān)诖颂幘帉懘a/*********begin*********/store["day"+date] = attValue;store.accountant = reviser;/*********end*********/var totalSales = store["day1"]+store["day2"]+store["day3"]+store["day4"]+store["day5"]+store["day6"]+store["day7"]+store["day8"]+store["day9"]+store["day10"];return totalSales+store.accountant; }