从javascript对象中删除属性的函数

时间:2018-09-20 06:35:56

标签: javascript javascript-objects

我想编写一个函数,如果将 对象已删除,对于其他对象,它应返回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。我该如何编写函数来删除作为参数传递的对象的属性?

1 个答案:

答案 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)