Prototype.js分析

Scheme 高階関数 Enumerable

    • 高階関数をやりこむとスムーズに理解できます。
<script>
var array = [1,2];

Array.prototype.each = function(iterator){
	var index = 0;
	this._each(function(value){
		iterator(value, index++);
	});
//	for(var i=0; i<this.length; i++){
//		(function(value, index){
//			alert(index + ":" + value);
//		})(this[i], index++);
//	}
}
Array.prototype._each = function(iterator){
	for(var i=0; i<this.length; i++){
		iterator(this[i]);
	}
}

Array.prototype.collect = function(iterator){
	var results = [];
	this.each(function(value, index){
		results.push(iterator(value, index));
	});
	return results;
}

var iterator = function(v){
	return v + 11;
}
	
rs = array.collect(iterator);
alert(rs)
</script>
    • 以下メモ
<script>
this._each(
    (function(value){
        function(value, index){
            results.push(
	        (function(v){
	          return v + 11;
                })(value, index)
            );
        }
    })(value, index++)
)
</script>