我想编写一个函数,如果将 对象已删除,对于其他对象,它应返回false。 函数接受两个参数,对象和属性名称。 下面的代码更加清晰:-
var removeObjectProp = function(obj, propName) {
if (obj.hasOwnProperty(propName)) {
return delete obj.propName;
}
return false;
}
var emp = {
name: 'jack',
age: 12
};
console.log(removeObjectProp(emp, 'name'));
console.log(emp)
输出:
True
{name: "jack", age: 12}
age:12
name:"jack"
__proto__:
Object
}
所以我再次得到相同的对象。如果我修改函数:-
var removeObjectProp = function(obj, propName){
return delete obj.propName;
}
并致电
console.log(removeObjectProp (emp,'salary'));
始终返回true。我该如何编写函数来删除作为参数传递的对象的属性?
答案 0 :(得分:3)
要delete
属性,如果属性名称是变量中包含的字符串,则需要使用方括号符号来删除该属性:
return delete obj[propName];
您将使用
delete obj.propName;
仅当propName
是属性的文字名称时,例如
{ name: 'jack', propName: 'foo' }
var removeObjectProp = function(obj, propName) {
if (obj.hasOwnProperty(propName)) {
return delete obj[propName];
}
return false;
}
var emp = {
name: 'jack',
age: 12
};
console.log(removeObjectProp(emp, 'name'));
console.log(removeObjectProp(emp, 'propThatDoesNotExist'));
console.log(emp)