原型-var x=[]-将函数添加到x上
Prototype - var x = [] - adds functions onto x
我是Prototype的新手,但我总是使用jQuery。我有一个需要使用jQuery和Prototype的网站。我对以下代码有问题:
var x = [];
console.log(x);
for (var l in x)
{
console.log(l);
}
运行此代码时,x包含以下内容:
每个每个切片全部的任何收集发现findAll选择grep包括成员inGroupsOf注射援引最大最小隔断拔拒绝sortBytoArray条目拉链大小检查发现_反向_每个清楚的第一最后的契约压平没有uniq横断克隆
预期结果(无原型):
没有子对象
Prototype为什么会这样做,以及如何阻止它?!
感谢
您不应该对数组使用for...in
,这正是原因。
for...in
循环遍历对象的所有属性。这包括它的属性(在本例中为数组索引),以及添加到prototype
的属性。
对于数组,只需使用普通的for
循环。
var x = [];
console.log(x);
for(var i = 0, len = x.length; i<len; i++){
console.log(i, x[i]);
}
注意:我做var i = 0, len = x.length
是因为它只从数组中获取length
一次,而不是每次迭代。它可能更快。
不应该在数组上使用for..in
,应该使用for( i=0; i<length; i++)
。但除此之外:
for( l in x) {
if( x.hasOwnProperty(l)) {
// l is a property of your object
}
}
这基本上忽略了循环的原型链。
使用for ... in
时,您枚举的是数组的所有(可枚举的)属性,而不仅仅是数字索引。
由于Prototype.js向Array.prototype
添加了许多新函数,并且未能将它们标记为不可枚举的,因此这些函数也都出现在属性列表中。
相关文章:
- 为JS函数添加延迟
- 如何向这个javascript/jquery函数添加参数
- 在Jquery中分离后,如何将相同的函数添加回代码中
- 为什么我要将函数添加到对象原型中,而不是将其添加到对象中
- 正在向构造函数添加作用域变量
- 必应地图没有'当我向函数添加另一个参数时,t显示
- 向函数添加多条语句
- 将JS函数添加到并行队列中
- Javascript - 如何向对象构造函数添加属性
- 将点击函数添加到动态 HTML 链接
- 如何将 JavaScript 函数添加到 Active 类中
- 如何将回调函数添加到 .map 方法
- 使用JavaScript函数添加多个DIV元素
- 如何将函数添加到动态创建的Selectable(jqueryui)中
- 将jquery函数添加到Angular ng repeat中
- Javascript对象/名称空间-如何访问从嵌套函数添加的属性(包括示例)
- 如何在javascript中向回调函数添加附加参数
- AngularJS将函数添加到作用域
- 如何在不向现有JavaScript函数添加代码的情况下向该函数添加回调函数
- 原型-var x=[]-将函数添加到x上