gpt4 book ai didi

javascript - 原型(prototype)函数污染 JavaScript 数组

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

我正在使用一个 API,它可以接受我正在使用的多个数组 apply()传递数组,但数组包含一个原型(prototype)函数,我似乎无法从单个数组中删除该函数。最终发生的是原型(prototype)函数被执行。

这是原型(prototype)函数: if ( !Array.prototype.last ) { Array.prototype.last = function(){ return this[this.length - 1]; }}

例如,当我记录每个数组时,我会在 eventList 数组中看到以下内容:

["name1", "index1", "value1", last: function]
["name2", "index2", "value2", last: function]
["name3", "index3", "value3", last: function]

然后我推送数组:

apiName.push.apply( apiName, eventList );

我已经尝试过array.pop()删除每个数组上的“last”函数,但无济于事。

原型(prototype)函数首先如何在数组中结束,以及如何防止它在 apply() 中被调用?

感谢您的见解!

最佳答案

数组是 JavaScript 中的对象。它们可以像对象一样具有属性和原型(prototype)。

例如:

var a = [];
a.foo = "bar";

这是完全有效的。但是“bar”在数组中吗?

我们问一下:

console.log(a.length); // 0
console.log(a.foo); // "bar"

所以:,它不在数组中,但它确实作为对象的属性存在。

就像属性一样,向原型(prototype)添加内容不会影响 .length 的值。

您在记录时看到自定义原型(prototype)有点不幸(令人困惑),但我将其归因于调试器中的自定义。

关于javascript - 原型(prototype)函数污染 JavaScript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16423861/

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