目录
任务描述
Luma Restaurant 以前的财务人员在统计销售额的时候不小心把数据弄错了,现在的财务人员想通过一个 JavaScript 函数方便的修改数据,并署上自己的名字,请你帮助她完成这个任务吧! 本关任务:根据本小结内容,完成 JavaScript 对象属性值的获取和修改。
相关知识
在 Java 中,当实体类建立以后,类的属性只能获取与修改,不能增加与删除。但是因为 JavaScript 是动态类型的语言,JavaScript 中对象的属性具有增删改查所有的操作。
属性的获取
方式一
属性的获取有两种方式,一种是使用.
符号,符号左侧是对象的名字,符号右侧是属性的名字,如下:
var student = {name:"Alice",gender:"girl"};
console.log(student.name); // 输出Alice
这种情况下属性名必须是静态的字符串,即不能是通过计算或者字符串的拼接形成的字符串。
方式二
另外一种是使用[""]
符号,符号的左边是对象的名字,双引号中间是属性的名字,这种情况下属性名可以是一个表达式,只要表达式的值是一个字符串即可。如下:
var student = {name:"Alice",gender:"girl"};
console.log(student["name"]); / /输出Alice
有两种情况必须使用第二种方式:
-
属性名含有空格字符,如
student["first name"]
,这时不能用student.first name
代替,编译器无法解释后者; -
属性名动态生成,比如用
for
循环获取前端连续 id 的值,这种 id 名之间一般有特定关系。如下面的例子:for(int i = 0;i < 5;i ++) { console.log(student["id"+i]); }
属性的修改与新增
属性的修改指修改已有属性的值,这个直接用赋值符号即可。 属性的新增与修改在形式上完全相同,区别仅在于编译器会根据属性的名字判断是否有该属性,有则修改,没有则新增。
var student = {
name:"Kim",
age:21
};
student.age = 20;//修改属性,覆盖了原来的值21
student.gender = "female";//新增属性gender
删除属性
JavaScript 中的属性还可以删除,这在其他的面向对象语言如 Java 或者 C++ 中是无法想象的,删除通过delete
运算符实现。删除成功返回布尔型true
,删除失败也是返回true
,所以在删除之前需要判断一个属性是否存在,这个内容将在下一关讲解。
需要注意的是,对象只能删除自己特有的属性,而不能删除继承自原型对象的属性。同时,对象在删除属性时,要防止删除被其他对象继承的属性,因为这样会导致程序出错。
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; // 删除失败,非自有属性
编程要求
请补全右侧 Begin 和 End 之间的代码片段,使函数reviseAttribute(reviser,date,attvalue)
具备根据传入参数修改store
对象的属性的功能,具体要求如下:
- 如果调用函数
reviseAttribute(reviser,date,attvalue)
并传入值Alice,1,1000
那么对应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 integer attValue = 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; }