_each
既然能看懂大部分代码,那么每个对象定义中都有的_each方法定义就楞是没看见吗?iterator(value, index++);
执行iterator函数
注意:iterator是作为参数传入的,实际使用的是哪个函数或对象的方法有程序员决定。
即,把什么函数做参数,就执行什么函数results.push(iterator(value, index));
把iterator(value, index)执行的结果压入堆栈results,以备使用
既然能看懂大部分代码,那么每个对象定义中都有的_each方法定义就楞是没看见吗?iterator(value, index++);
执行iterator函数
注意:iterator是作为参数传入的,实际使用的是哪个函数或对象的方法有程序员决定。
即,把什么函数做参数,就执行什么函数results.push(iterator(value, index));
把iterator(value, index)执行的结果压入堆栈results,以备使用
each: function(iterator) {}
}
等同于:
var Enumerable = new Object();
Enumerable.each = function(iterator){}
Enumerable.all = function(iterator){}
没有什么难的!
对 prototype.js 我的态度是不喜欢,因为它污染了 Object 的这个其类对象
lz问的this._each是哪里来的,没看过prototype.js,大概看了一下,虽然像xuzuning(唠叨) 说得那样,每个对象都定义了这个_each,但是其实每个_each都是独立的,目的只是添加一个私有方法而已(虽然这个私有方法并不是私有的)。而且,外国人很习惯用 _[objname] 这样的形式定义一个objname的私有变量,方便记忆。
var $continue = new Object();
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>
不好意思,可能是受了dojo Collections包的影响
prototype.js没有Collections的实现吗???有时间看看