我有一个函数,它接收一个对象(称为“卡”)。在这个函数里面我想改变它的一个属性的值,但它不会改变。 这是功能:
function replaceImgsUrl(card){
console.log("card: " , card);// prints card: {imgs:[]}
card.imgs = "sex";
console.log("new card: " , card); // prints new card: {imgs:[]}
return card;
}
顺便说一句,我使用node.js,虽然我不认为这会有所作为。 有没有人知道为什么会发生这种情况?
答案 0 :(得分:2)
我不确定您的card
对象是如何定义的,以及它是freezed
还是您正在使用some kind of immutable library,这会阻止您改变属性。
但是否则它可以正常工作,你可以在这里看到:
var myCard = {
imgs: []
}
function replaceImgsUrl(card){
console.log("card: " , card);// prints card: {imgs:[]}
card.imgs = "sex";
console.log("new card: " , card); // prints new card: {imgs:[]}
return card;
}
replaceImgsUrl(myCard);

答案 1 :(得分:0)
您的代码似乎使用实际对象作为参数,但看起来很奇怪。为什么要用字符串替换类型为数组的对象属性?
ToolStripMenuItem

答案 2 :(得分:0)
看起来card
对象被冻结Object.freeze()
或以其他方式配置为不允许修改对象属性。
如果您真的希望imgs
属性从数组更改为字符串,那么除了创建新对象之外,您可能没有其他方法:
function replaceImgsUrl(card){
console.log("card: " , card);// prints card: {imgs:[]}
card = Object.assign({}, card); // get shallow copy
card.imgs = "sex";
console.log("new card: " , card); // prints new card: {imgs:"sex"}
return card;
}
请注意,只有返回的值才能拥有您想要的对象;原始对象不会改变。