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