1

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

这是原型函数: 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()删除每个数组上的“最后一个”函数,但无济于事。

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

感谢您的任何见解!

4

1 回答 1

1

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

前任:

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

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

我们去问问吧:

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

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

就像使用属性向原型添加东西不会影响.length.

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

于 2013-05-07T16:22:58.657 回答