使用defineProperty的JS密钥重命名在Node.js中不起作用

时间:2017-05-15 09:38:46

标签: javascript node.js

Object.prototype.prefixKeys = function (prefix) {
 for (var key in this) 
   this.hasOwnProperty(key) 
   && Object.defineProperty(this, prefix + key, {value: this[key]})
   && delete this[key]
}

以上代码在chrome控制台中按预期工作。但只需删除Node v6.10.2中的密钥。我做错了什么?

1 个答案:

答案 0 :(得分:3)

对象上仍然存在带前缀的键,但如果您希望它们显示在您身上,比如console.log(obj),那么您需要创建属性enumerable

Object.prototype.prefixKeys = function (prefix) {
 for (var key in this) 
   this.hasOwnProperty(key) 
   && Object.defineProperty(this, prefix + key, {
     value: this[key],
     enumerable: true
   })
   && delete this[key]
}