Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 给定for…in构造,库提供的函数如jQuery.map()或u.each()有什么用途?_Javascript_Jquery_Loops_Foreach_Underscore.js - Fatal编程技术网

Javascript 给定for…in构造,库提供的函数如jQuery.map()或u.each()有什么用途?

Javascript 给定for…in构造,库提供的函数如jQuery.map()或u.each()有什么用途?,javascript,jquery,loops,foreach,underscore.js,Javascript,Jquery,Loops,Foreach,Underscore.js,看起来它是在重新发明本地提供的轮子,不是吗?它真的值得额外的框架重量吗?为什么这些框架认为需要将其定义为一个附加功能,而for…in似乎很好地满足了该功能的目的?例如,如果您这样做: for (var i = 0; i < 5; i += 1) { document.getElementById('el' + i).onclick = function () { alert(i); }; } 但每种方法都更好,因此,当您不是好的示例,只是为了演示: $('.el').ea

看起来它是在重新发明本地提供的轮子,不是吗?它真的值得额外的框架重量吗?为什么这些框架认为需要将其定义为一个附加功能,而for…in似乎很好地满足了该功能的目的?

例如,如果您这样做:

for (var i = 0; i < 5; i += 1) {
  document.getElementById('el' + i).onclick = function () {
    alert(i);
  };
}
但每种方法都更好,因此,当您不是好的示例,只是为了演示:

$('.el').each(function (i) {
  $(this).click(function () { alert(i); });
});

然后它就可以正常工作了,因为当您在函数中传递变量时,上下文就会丢失。

例如,如果您这样做:

for (var i = 0; i < 5; i += 1) {
  document.getElementById('el' + i).onclick = function () {
    alert(i);
  };
}
但每种方法都更好,因此,当您不是好的示例,只是为了演示:

$('.el').each(function (i) {
  $(this).click(function () { alert(i); });
});
然后它就可以正常工作了,因为当您在函数中传递变量时,上下文就会丢失。

有一些方法可以避免使用..in来迭代数组

$.each和u.each替代在Javascript 1.6中引入之前。

有一些可以避免使用for..in来迭代数组

$.each和u.each在Javascript 1.6中引入之前的替代版本。

。。。中还捕获原型链中的属性。您必须使用.hasOwnProperty方法来筛选出内容。

对于。。。中还捕获原型链中的属性。您必须使用.hasOwnProperty方法来筛选出内容。

继承问题 可通过以下方式解决:

for (key in obj) {
  if(obj.hasOwnProprty(key)) continue;
  console.log("Property "+key+" has value "+obj[key].toString());
}
我见过一些关于管子的使用:

if (Object.prototype.hasOwnProperty(key)) continue;
…对于hasOwnProperty过滤器,但我认为它本质上并不安全,如果您在页面上包含修改对象hasOwnProperty属性的代码,那么我想告诉您什么,除了代码就在那里^^^^如果您需要,并找到一个新的库开始使用。我的意思是,如果有人可以修改你对象的hasOwnProperty属性,那么怎样才能阻止他们修改object.prototype.hasOwnProperty呢

总之,一些与继承财产问题相关的链接:

我真的希望有人能帮助javascript.info这个家伙维护他的教程的英文版本,因为它真的很棒

关于…的另一个问题 …从理论上讲,您不能保证迭代顺序。若您处理的是一个数组,那个么它不一定是索引的升序甚至降序。规格由供应商决定。在实践中,我读到它或多或少是一致的和可预测的,但这并不能保证一切。

继承问题 可通过以下方式解决:

for (key in obj) {
  if(obj.hasOwnProprty(key)) continue;
  console.log("Property "+key+" has value "+obj[key].toString());
}
我见过一些关于管子的使用:

if (Object.prototype.hasOwnProperty(key)) continue;
…对于hasOwnProperty过滤器,但我认为它本质上并不安全,如果您在页面上包含修改对象hasOwnProperty属性的代码,那么我想告诉您什么,除了代码就在那里^^^^如果您需要,并找到一个新的库开始使用。我的意思是,如果有人可以修改你对象的hasOwnProperty属性,那么怎样才能阻止他们修改object.prototype.hasOwnProperty呢

总之,一些与继承财产问题相关的链接:

我真的希望有人能帮助javascript.info这个家伙维护他的教程的英文版本,因为它真的很棒

关于…的另一个问题
…从理论上讲,您不能保证迭代顺序。若您处理的是一个数组,那个么它不一定是索引的升序甚至降序。规格由供应商决定。在实践中,我读到过,它或多或少是统一的和可预测的,但这并不能保证一切。

@adlwalrus-关于闭包和匿名函数的价值,非常值得一读,这样你就可以了解许多库的幕后情况。@SperanskyDanil JS中没有任何东西是通过引用传递的。对象只有一个引用作为其值。@adlwalrus-关于闭包和匿名函数的价值值得一读,这样您就可以了解许多库的幕后情况。@SperanskyDanil JS中没有任何东西是通过引用传递的。对象只有一个引用作为它们的值。你能举个例子说明如何做到这一点吗?我曾想过以某种方式将对象的原型重新分配给不同的东西,比如说,oogabooga,但我仍然无法摆脱它的对象罩,所以这似乎永远不会成为一种策略。我不能确定页面上还有哪些库可能会改变Object;然后获取任何[native]对象并尝试window.alert{}.testValue testValue现在testValue属性显示在每个对象中,您需要额外的代码来过滤它。这就是…的问题所在。。。一切都解决了。。。检查我的答案你能举个例子说明怎么做吗?我有一个想法,不知怎的重新分配了ob
ject的原型是不同的,比如说,oogabooga,但我仍然无法摆脱它的对象罩,所以它似乎永远不会作为一种策略工作。我不能确定页面上还有哪些库可能会改变Object;然后获取任何[native]对象并尝试window.alert{}.testValue testValue现在testValue属性显示在每个对象中,您需要额外的代码来过滤它。这就是…的问题所在。。。一切都解决了。。。检查我的答案对,这就是为什么我不是问Arrary.forEach,而是问..in,它似乎有广泛的兼容性。链接的线程非常好。也就是说,鉴于我无法控制页面上加载了哪些库,是否有任何方法可以避免Object.prototype的潜在添加?我可以把对象实例的proto改成其他的吗?我想不会有什么东西不是这个物体的后代吧?hasOwnProperty骗局是如何运作的?最重要的是?下划线方法中的一个在可用时将委托给本机方法。和uu。每个和朋友都处理非数组对象以及数组。是的,我再次询问的是…in,而不是forEach。我正在处理非数组对象。对,这就是为什么我不询问Arrary.forEach,而是询问..in,它似乎具有广泛的兼容性。链接的线程非常好。也就是说,鉴于我无法控制页面上加载了哪些库,是否有任何方法可以避免Object.prototype的潜在添加?我可以把对象实例的proto改成其他的吗?我想不会有什么东西不是这个物体的后代吧?hasOwnProperty骗局是如何运作的?最重要的是?下划线方法中的一个在可用时将委托给本机方法。和uu。每个和朋友都处理非数组对象以及数组。是的,我再次询问的是…in,而不是forEach。我正在处理非数组对象。所有答案都很好。t他们都添加了不同的见解,因此,如果你看到这些,请阅读他们。所有答案都很好。t他们都添加了不同的见解,因此,如果你看到这一点,请阅读他们。