当前位置: 首页 > news >正文

JavaScript——属性的增删改查

目录

任务描述

相关知识

属性的获取

方式一

方式二

属性的修改与新增

删除属性

编程要求

任务描述

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那么对应storeday1属性的值就修改为 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;
    }

http://www.lryc.cn/news/388002.html

相关文章:

  • 51单片机第15步_串口多机通讯使用CRC8校验
  • WPF----进度条ProgressBar(渐变色)
  • Apipost接口测试工具的原理及应用详解(四)
  • 【图论】200. 岛屿问题
  • AI学习指南机器学习篇-随机森林的优缺点
  • 基于boost::beast的http服务器(上)
  • 深度学习之近端策略优化(Proximal Policy Optimization,PPO)
  • 用pycharm进行python爬虫的步骤
  • 重写功能 rewrite
  • ISO19110操作要求类中/req/operation/operation-attributes的详细解释
  • 访客(UV)、点击量(PV)、IP、访问量(VV)概念
  • C++系统编程篇——Linux第一个小程序--进度条
  • 一个中文和越南语双语版本的助贷平台开源源码
  • 【游戏引擎之路】登神长阶(五)
  • FireAct:使用智能体(agent)微调大语言模型
  • 20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览
  • python数据分析——数据分类汇总与统计
  • iOS17系统适配
  • 树洞陪聊陪玩交友程序系统源码,解锁交友新体验
  • 区间动态规划——最长回文子序列长度(C++)
  • 无人机远程控制:北斗短报文技术详解
  • 240627_关于CNN中图像维度变化问题
  • 食品行业怎么用JSON群发短信
  • MySQL高级-MVCC-隐藏字段
  • 探索PcapPlusPlus开源库:网络数据包处理与性能优化
  • 深入理解SSH:网络安全的守护者
  • DDD学习笔记四
  • Head First设计模式中的典型设计模式解析与案例分析
  • iptables 防火墙(一)
  • 数据库物理结构设计-定义数据库模式结构(概念模式、用户外模式、内模式)、定义数据库、物理结构设计策略