如何访问Javascript对象';在forEach或for迭代中的成员
我有一个名为numObj的对象,我创建了一个包含numObj对象数组的numArrary。 当我尝试使用foreach调用其内部成员时,结果是无法使用。为什么如何访问Javascript对象';在forEach或for迭代中的成员,javascript,Javascript,我有一个名为numObj的对象,我创建了一个包含numObj对象数组的numArrary。 当我尝试使用foreach调用其内部成员时,结果是无法使用。为什么 var numObj = function (num) { return { num:num } } var numArray = []; for (var i = 0; i < 3; i++) { numArray[i] = nu
var numObj = function (num) {
return {
num:num
}
}
var numArray = [];
for (var i = 0; i < 3; i++) {
numArray[i] = numObj(i);
}
numArray.forEach(
function () {
alert(this.num); //undefined
}
);
var numObj=函数(num){
返回{
num:num
}
}
var numArray=[];
对于(变量i=0;i<3;i++){
Numaray[i]=numObj(i);
}
努马拉·弗雷奇(
函数(){
警报(this.num);//未定义
}
);
此外,当我获得更深层次的内部对象时,我失去了与任何想法相比的智能感知?条目作为第一个参数传递给
forEach
迭代器,因此:
numArray.forEach(
function (obj) { // Declare the argument
alert(obj.num); // Use it
}
);
不要对条目使用this
(例如,jQuery的类似函数就是这样做的)。尝试以下方法:
var numArray = [{1:1},{2:2}];
numArray.forEach(function(value,index){
console.log(value,index,this);//{1:1},0 window
});
此
-指窗口
我真的这么想吗?你不想使用
for(numArray中的numObj)
表单吗?@shishirmk:是的,它实际上是JavaScript。@user:“我有一个名为numObj的对象”你想,是的,尽管大多数人会称它为函数。(它也是一个对象,因为JavaScript函数是对象,但是…@T.J.Crowder感谢您刚刚在CDT控制台中尝试过它。我根本不知道这种格式。@shishirmk:不用担心。:-)“我不知道这个格式……”嗯,语法上没有任何变化(OP只是有一个稍微不寻常的换行方法,但是非常清晰易读)forEach
只是数组上的一个函数,由ES5添加。感谢Crowder,对于(b中的a)表达式如何?@user1978421:in的for循环迭代对象的可枚举属性。由于各种原因,这通常不是循环遍历数组内容的最佳方式。更多的在和。