gpt4 book ai didi

javascript - 为什么这个对象在函数运行之前发生变化?

转载 作者:行者123 更新时间:2023-11-30 09:14:47 25 4
gpt4 key购买 nike

<分区>

我有一个对象,它的值之一是一个(类对象的)数组。我有一个函数,在某种程度上,该函数在该数组内(对象内)的其中一个对象上运行类方法。

当我运行我的代码时,在函数之前和之后打印数组,变化在函数运行之前和之后都存在。

为什么会这样?吊装?

作为测试,我在对象中创建了另一个键值对,使值是一个整数,并将我的函数更改为将该整数增加 1。在这里,它工作正常 - 我的对象在函数将该整数设为 1,然后将整数设为 2。

我也试过不使用对象上的类方法来进行调整,但仍然失败。

class Book{
constructor (color, title, pagecount){
this.color = color;
this.title = title;
this.pagecount = pagecount;
}

changePages() {
this.pagecount += 50;
}
}

let book1 = new Book("Red", "Book1", 100);
let book2 = new Book("Blue", "Book2", 200);
let book3 = new Book("Green", "Book3", 300);

var myBookArr = [book1, book2, book3]

var myObj = {arr: myBookArr, integerTest: 0}


function thisDoesStuff(){
//other operations not related to myObj
myObj.arr[0].changePages();
}

当我运行以下命令时,在两个 console.logs 中,它显示 arr[0](即 book1)有 150 页。

console.log(myObj);
changePages();
console.log(myObj);

我希望第一个 console.log 将 book1 显示为它的原始值,然后函数会更改它。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com