コードが一度もテストに成功するとは思いませんでした。~~これは、IE をサポートするために変更された単なる FF です。 IE は関数式を認識しないためです。
var Iterator = function (fn) {
var coroutine = null;
var cofn_this = null;
var yield = function() {
coroutine.apply(cofn_this, argument); // IE をサポートします。
/ 注: IE 評価("function(){}") は関数オブジェクトを返しません。 > coroutine = cofn;
cothis 🎜> Array.prototype.forEach = new Iterator(function () {
for (var i) = 0; i < this.length i ) {
= window.alert;
var A = [1,2,3,4,5] ;
A.forEach(function(it ){
} this.display(it)
}, this );
トリックがあります:
fn = eval(fn.toString())
fn の参照を現在のコンテキストにバインドするために使用され、fn の yield が定義した yield 関数を参照するようになります。
コルーチン内の他の this コンテキストにアクセスする必要がある場合は、それを example などのイテレーターに渡す必要があることに注意してください。