gpt4 book ai didi

javascript - jQuery 函数中 "this"的范围

转载 作者:行者123 更新时间:2023-12-03 09:41:51 24 4
gpt4 key购买 nike

今天我遇到了一个非常有趣的问题,很多人可能觉得这个问题很简单,但由于我刚刚学习使用 jQuery,所以我很想知道它是如何工作的。

我有两个数组,我正在迭代数组的元素。一个数组是 arrAllDetailsConstantData,另一个数组是 arrAllDetails。我想使用 arrAllDetailsConstantData 进行比较,并使用 arrAllDetails 进行更新

我正在使用嵌套循环。但发生的情况是,在更新数组 arrAllDetails 时,数组 arrAllDetailsConstantData 也在更新。我认为这在某种程度上与父级 this 的范围有关(尽管我只是猜测)。你能帮我解决这个问题吗?

这是我的代码:

$.each(privateVariables.arrAllDetailsConstantData, function() {
if (this.AssociationId == value && this.uniqueChargeAttr == uniqueChargeAttr) {

if (this.Units == $("#txtUnits").val() &&
this.Modifier1 == $("#txtModifier1").val() &&
this.Modifier2 == $("#txtModifier2").val() &&
this.Modifier3 == $("#txtModifier3").val() &&
this.Modifier4 == $("#txtModifier4").val() &&
this.DxOption == $("#ddlDxOption").val() &&
this.DxCode1 == $("#txtDx1").val() &&
this.DxCode2 == $("#txtDx2").val() &&
this.DxCode3 == $("#txtDx3").val() &&
this.DxCode4 == $("#txtDx4").val()) {

} else {
$.each(arrAllDetails, function() {
if (this.AssociationId == value && this.uniqueChargeAttr == uniqueChargeAttr) {
this.ActionType = "M";
this.CptName = $("#lblCptDesc").text();
this.CptDesc = $("#lblCptDesc").text();
this.Units = $("#txtUnits").val();
this.Modifier1 = $("#txtModifier1").val();
this.Modifier2 = $("#txtModifier2").val();
this.Modifier3 = $("#txtModifier3").val();
this.Modifier4 = $("#txtModifier4").val();
this.DxOption = $("#ddlDxOption").val();
this.DxCode1 = $("#txtDx1").val();
this.DxCode2 = $("#txtDx2").val();
this.DxCode3 = $("#txtDx3").val();
this.DxCode4 = $("#txtDx4").val();

privateVariables.arrActionData.push(this);

}
});
}
}
});

// test code ends

最佳答案

  • 首先,jQuery 的 this 引用调用元素。

$.each中,它指的是迭代元素

因此,在您的第一个循环中:$.each(privateVariables.arrAllDetailsConstantData, function() {});this将是当前循环元素 arrAllDetailsConstantData 数组。

在第二个循环中,this 将是 arrAllDetails 数组的当前循环元素

  • 其次,我们需要数组创建的代码。

不要忘记,在许多语言中,如果您使用此arrAllDetailsConstantData = arrAllDetails,则对这两个对象的指针引用将指向相同的内存范围

在本例中,请使用 Array.prototype.slice 中的 arrAllDetailsConstantData = arrAllDetails.slice();

关于javascript - jQuery 函数中 "this"的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31160816/

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