我有一个obj[prop]
形式的对象,在prop === 'name'
的情况下,使用语法obj[prop] = 'xyz'
无法设置属性。相反,我必须先删除obj[prop]
,然后再设置它。
这里的代码太多了,所以这是一个普遍的问题。有没有人知道可能导致这个问题的原因是什么?这只是在prop ==='name'时发生的。我试过的其他所有财产都没有问题。
答案 0 :(得分:2)
我只知道一种这样的情况:name
被定义为不可写。它也必须是可配置的,否则你将无法删除它。
var prince = {}
Object.defineProperty(prince, 'name', {
writable: false,
configurable: true,
value: "Prince"
})
prince.name = 'The Artist Formerly Known as Prince';
console.log(prince.name);
// => Prince
答案 1 :(得分:1)
您应该检查属性“name”是否可写:
depends_on
有关属性描述符的更多信息,请访问: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor#Description