Javascript foreach和for区别
看到一篇面向对象的练习文章.手动构建对象,自己写一个jQuery的几个功能麻烦大神指点下 为什么下面foreach就无法在this里写入数据,但是for却可以这2个for循环有什么不同吗
window.onload = function () {
function Jquery(selector) {
let sec = document.querySelectorAll(selector);
sec.forEach(function (obj,idx) {
this = obj// 这段代码不会执行写入
});
for (let i=0; i<sec.length;i++){
this=sec // 这段代码却可以写入
}
console.log(this)
}
Jquery.prototype.on = (type, callback) => {
//jQuery的on方法调用是 $("div").on(click,function(){} )
};
let jq = new Jquery(".d");
} ForEach这个方法在javascript的设计里面就是没有办法对遍历数值内的元素进行修改的,ForEach方法一般是我们用来做数据查询遍历业务的时候使用的,他本身的特质决定了他没有办法改变数据,比较有利于代码调试。 js 不怎么会 foreach那里 没看懂i变量在哪里 在java里foreach一般只做循环访问信息 基本很少更改集合内容 xingchen2022 发表于 2022-8-8 17:46
ForEach这个方法在javascript的设计里面就是没有办法对遍历数值内的元素进行修改的,ForEach方法一般是我们 ...
感谢,感谢,我也查到了,foreach里面this的作用域默认都是windows,所以无法实现我的需求 建议先去看一下关于this指向的知识,这个this还是挺难搞明白的 看MDN,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach 其实map遍历比较适合你的需求,可以了解一下
sxfxtf 发表于 2022-8-8 17:52
感谢,感谢,我也查到了,foreach里面this的作用域默认都是windows,所以无法实现我的需求
你把forEach里面的函数写成箭头函数,也是可以的,不过不建议这么用,forEach一般不是这么用的,而且this的指向你也要心里有数 foreach 是数组的方法有3个参数,第一个是循环出来的值,第二个是数组下标,第三个参数是要循环的数组。 参数问题 https://zhuanlan.zhihu.com/p/27865430
forEach的this指向有特别设定,需要指定传入参数,类似箭头函数
页:
[1]
2