KolaDecember. 2022-07-02 10: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 12: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月13日
  • 已采纳回答 7月5日
  • 创建了问题 7月2日

悬赏问题

  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项