如何通过自定义函数动态删除JavaScript对象的指定属性
代码修正方案
你写的代码有两个核心问题导致功能失效:
- 传参错误:调用
deleteProperty时你传的是this.rollno,全局环境下的this指向window而非student对象,而且你传递的是属性的值而非要删除的属性名称,需要传入属性名字符串,比如'rollno' - delete操作逻辑错误:你直接写
delete property删除的是函数内部的参数变量,根本不会作用到student对象的属性上,需要用this[property]的动态属性访问语法定位到对象的对应属性再删除
修正后的可运行代码如下:
const student = { names: "David Rayy", sclass: "VI", rollno: 12, deleteProperty(property) { console.log(property) // 用this访问当前实例,方括号语法动态读取属性 delete this[property] console.log(student) }, } // 传入要删除的属性名字符串 student.deleteProperty('rollno')
运行后会看到student对象的rollno属性被成功删除。
内容的提问来源于stack exchange,提问作者berboş
相关产品推荐
相关产品推荐

