_each 
既然能看懂大部分代码,那么每个对象定义中都有的_each方法定义就楞是没看见吗?iterator(value, index++);         
执行iterator函数
注意:iterator是作为参数传入的,实际使用的是哪个函数或对象的方法有程序员决定。
即,把什么函数做参数,就执行什么函数results.push(iterator(value, index));   
把iterator(value, index)执行的结果压入堆栈results,以备使用

解决方案 »

  1.   

    var Enumerable = {
      each: function(iterator) {}
      }
    等同于:
    var Enumerable = new Object();
    Enumerable.each = function(iterator){}
    Enumerable.all  = function(iterator){}
    没有什么难的!
    对 prototype.js 我的态度是不喜欢,因为它污染了 Object 的这个其类对象
      

  2.   

    Iterator Java里面的叠代器,实现了遍历对象的统一方法。在JS里面,遍历数组和遍历对象的方法是不一样的,遍历对象必须使用 for in ,遍历数组一般使用 for() { ... },用了Iterator 后可以实现统一的遍历方法 while(!a.atEnd()) { ... },隐藏了要遍历集合的内部结构,降低了耦合度lz自己找找资料,之前我也是不理解Iterator的意思
    lz问的this._each是哪里来的,没看过prototype.js,大概看了一下,虽然像xuzuning(唠叨) 说得那样,每个对象都定义了这个_each,但是其实每个_each都是独立的,目的只是添加一个私有方法而已(虽然这个私有方法并不是私有的)。而且,外国人很习惯用 _[objname] 这样的形式定义一个objname的私有变量,方便记忆。
      

  3.   

    楼上,对于iterator能再详细讲点吗,哪里有关于 iterator函数的用法手册。请举几个小小例子来说明iterator的用法var $break    = new Object();  //为什么要定义这两个对象,什么目的
    var $continue = new Object();
      

  4.   

    没有BaSaRa_GIT(BaSaRa_GIT)说的那么邪乎,看看这个就知道了<script>
    var MyObj = {
      foo: function(iterator) {
        iterator(1);
      }
    }function f1(n) {
      alert(n);
    }function f2(n) {
      alert(n+n);
    }MyObj.foo(f1);
    MyObj.foo(f2);
    </script>
      

  5.   

    回xuzuning(唠叨) 
    不好意思,可能是受了dojo Collections包的影响
    prototype.js没有Collections的实现吗???有时间看看