为什么这里的this是指向windows

co(function *() {

            var now = Date.now();

            yield sleep200;

            console.log(Date.now() - now);

        });


        function co(fn){

            var gen = fn();

            next();

            function next(res){

                var ret;

                ret = gen.next(res);

                // 全部结束

                if(ret.done){

                    return;

                }

                // 执行回调

                if (typeof ret.value == 'function') {

                    ret.value(function(){

                        next.apply(this, arguments);

                    });

                    return;

                }

                throw 'yield target no supported!';

            }

        }


        function sleep200(cb){

            setTimeout(cb, 200)

        }

在next.apply()那一行。
我这里有点糊涂了,像这种点调用的话,this不应该指向调用者吗?也就是next对象,可这里next是个函数。可为什么是window对象呢

子衿沉夜
浏览 498回答 1
1回答

神不在的星期二

ret.value(function(){    next.apply(this, arguments);});这里ret.value的参数是一个匿名函数,你见过匿名函数中的this不是window的情况吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript