gpt4 book ai didi

javascript - 需要解释代码输出

转载 作者:行者123 更新时间:2023-11-28 03:48:26 25 4
gpt4 key购买 nike

这段代码有效...它创建了一个 Test对象,当 Test对象已初始化,InnerObject创建并插入 objects数组。

list()方法返回 objects 的副本数组。

我记录返回值list()方法line 42在其下方,位于 line 46 ,我更新 objects 中的对象数组(改变它)。

我不明白的是为什么这个突变会反射(reflect)在 line 42 上当此行应该在 line 46 之前执行时.

var Test = (function() {
var objects = [];
var InnerObject = {
init: function(data) {
this.prop1 = data.prop1 || 'first';
this.prop2 = data.prop2 || 'second';
this.prop3 = data.prop3 || 'third';
return this;
}
};
return {
init: function(data) {
data.forEach(function (item) {
var obj = Object.create(InnerObject).init(item);
objects.push(obj);
});
return this;
},
update: function(idx) {
var testObj = objects[idx];
for (var prop in testObj) {
testObj[prop] = '1';
}
return obj;
},
list: function() {
return objects.slice();
}
}
})();

var item = {
prop1: 'newFirst',
prop2: 'newSecond',
prop3: 'newThird'
}

var data = [item];

var obj = Object.create(Test).init(data);

console.log(obj.list()); // why the property value of each element here is 1
//when we are invoking update method below

//without update method it would log values
// newFirst and so on...
obj.update(0);

最佳答案

可能是因为 console.log() 是异步执行的:

console.log() async or sync?

阅读那里的答案,我怀疑这就是这里发生的事情。为了排除这对您的实际代码造成的问题,建议强制按当时的情况进行解释:console.log(JSON.stringify(obj.list()))

关于javascript - 需要解释代码输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48242948/

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