吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 871|回复: 13
收起左侧

[求助] Javascript foreach和for区别

[复制链接]
sxfxtf 发表于 2022-8-8 17:35
看到一篇面向对象的练习文章.手动构建对象,自己写一个jQuery的几个功能
麻烦大神指点下 为什么下面foreach就无法在this里写入数据,但是for却可以  这2个for循环有什么不同吗
[JavaScript] 纯文本查看 复制代码
window.onload = function () {
    function Jquery(selector) {
    let sec = document.querySelectorAll(selector);

    sec.forEach(function (obj,idx) {
        this[i] = obj  // 这段代码不会执行写入
    });

        
    for (let i=0; i<sec.length;i++){
        this[i]=sec[i]   // 这段代码却可以写入
    }
    
    console.log(this)
}

Jquery.prototype.on = (type, callback) => {
    //jQuery的on方法调用是 $("div").on(click,function(){} )

};
let jq = new Jquery(".d");



}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
HjiaLe02 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xingchen2022 发表于 2022-8-8 17:46
ForEach这个方法在javascript的设计里面就是没有办法对遍历数值内的元素进行修改的,ForEach方法一般是我们用来做数据查询遍历业务的时候使用的,他本身的特质决定了他没有办法改变数据,比较有利于代码调试。
yuqiu 发表于 2022-8-8 17:48
js 不怎么会 foreach那里 没看懂i变量在哪里   在java里foreach一般只做循环访问信息 基本很少更改集合内容
 楼主| sxfxtf 发表于 2022-8-8 17:52
xingchen2022 发表于 2022-8-8 17:46
ForEach这个方法在javascript的设计里面就是没有办法对遍历数值内的元素进行修改的,ForEach方法一般是我们 ...

感谢,感谢,我也查到了,foreach里面this的作用域默认都是windows,所以无法实现我的需求
lucklys 发表于 2022-8-8 17:59
建议先去看一下关于this指向的知识,这个this还是挺难搞明白的
深山霜枫 发表于 2022-8-8 18:01
看MDN,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
lucklys 发表于 2022-8-8 18:02
其实map遍历比较适合你的需求,可以了解一下
yue_tai_mei 发表于 2022-8-8 18:32
sxfxtf 发表于 2022-8-8 17:52
感谢,感谢,我也查到了,foreach里面this的作用域默认都是windows,所以无法实现我的需求

你把forEach里面的函数写成箭头函数,也是可以的,不过不建议这么用,forEach一般不是这么用的,而且this的指向你也要心里有数
415891872 发表于 2022-8-8 19:42
foreach 是数组的方法  有3个参数,第一个是循环出来的值,第二个是数组下标,第三个参数是要循环的数组。 参数问题
steven026 发表于 2022-8-8 20:24
https://zhuanlan.zhihu.com/p/27865430
forEach的this指向有特别设定,需要指定传入参数,类似箭头函数
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-14 18:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表