代码之家  ›  专栏  ›  技术社区  ›  Alec Smart

Mootools奇怪的bug与jQuery冲突

  •  0
  • Alec Smart  · 技术社区  · 17 年前

    请尝试运行以下代码:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script> b = jQuery.noConflict(true); </script>
    
    <script src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js"></script>
    <script>
      (function($){  
        $.a = function(){
          var x = [];
          for (l in x){
            console.log(l);
          }
        };
      })(b);
    
      b.a();
    </script>
    

    即使x是空的,在 console.log

    1 回复  |  直到 10 年前
        1
  •  3
  •   Christian C. Salvadó    17 年前

    框架 沉重地 extends 这个 Array.prototype ,并使用 for...in

    对于传统的数组,此语句用于迭代对象属性 for while 建议使用循环。

    为什么? 因为 为了……在 语句在原型链上爬行,正如您所注意到的,这也是因为迭代的顺序是任意的,所以在数组上迭代可能不会以数字顺序访问元素。

    但是,如果仍然希望使用此语句进行迭代,则可以使用 hasOwnProperty 功能:

    var x = [];
    for (l in x){
      if (x.hasOwnProperty(l)) {
        console.log(l);
      }
    }