KolaDecember. 2022-07-02 02:36 采纳率: 64.7%
浏览 31
已结题

迭代器 let this1=this;为什么要这么用


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //声明一个对象
        const banji={
            name:"终极一班",
            stus:[
                'xoapming',
                'fdefg',
                'xiaohaong'
            ],
            [Symbol.iterator](){
                //索引变量
                let index=0;
                let this1=this;
                return {
                    next:function(){
                        if(index<this1.stus.length){
                            const result={value:this1.stus[index],done:false};
                            index ++;
                            return result;
                        }else{
                            return {value:undefined,done:true}
                        }
                       
                    }
                };
            }
        }
        for(let v of banji){
            console.log(v);
        }
    </script>
</body>
</html>

请问为什么要 let this1=this; 有什么作用吗? 不用这个为什么会报错?

展开全部

  • 写回答

4条回答 默认 最新

  • 林一怂儿 前端领域新星创作者 2022-07-02 04:07
    关注

    img


    不想使用这种方式,可用使用箭头函数。

    img

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            //声明一个对象
            const banji = {
                name: "终极一班",
                stus: [
                    'xoapming',
                    'fdefg',
                    'xiaohaong'
                ],
                [Symbol.iterator]() {
                    //索引变量
                    let index = 0;
                    // let this1 = this;
                    return {
                        next: () => {
                            if (index < this.stus.length) {
                                const result = { value: this.stus[index], done: false };
                                index++;
                                return result;
                            } else {
                                return { value: undefined, done: true }
                            }
    
                        }
                    };
                }
            }
            for (let v of banji) {
                console.log(v);
            }
        </script>
    </body>
    
    </html>
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 已采纳回答 7月5日
  • 创建了问题 7月2日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部