JavaScript循环中的访问范围

时间:2018-11-06 15:05:36

标签: javascript

我有下面的代码,并且一直在尝试并正在阅读,但仍无法弄清楚如何遍历params数组/对象,并将键值对设置为'this',这样我就可以按照我下面的代码的最后一行。

我相信是因为有作用域,当它在for循环中时,'this'不再引用我的函数,但是如何在其中获得作用域?我发现可以将它作为辅助参数添加到foreach循环中,但是我无法在关联数组上使用foreach循环。...

稍后,我希望能够以我的示例显示输出lname的方式访问传递给函数batman的数组中的任何值。

function batman(id,params){
  this.id=id;
  for(.....params.....){
    // this.key=val;
  }
  
}


x=new batman("my_id",{fname:"jason",lname:"bourne"});
console.log("id: "+x.id); // works fine
console.log("fname: "+x.fname); // would like to get this to work...

2 个答案:

答案 0 :(得分:2)

您的意思是这样吗?看来您的问题是解析params对象中的键/值对。运行代码片段以查看其工作原理...

function batman(id,params){
  this.id=id;
  for(var key in params){
    this[key]=params[key];
  }
}


x=new batman("my_id",{fname:"jason",lname:"bourne"});
console.log("id: "+x.id); // works fine
console.log("fname: "+x.fname); // hey look! this works fine now...

答案 1 :(得分:1)

您可以在forEach的键上使用params来设置其属性。

为了遵守约定,我已将batman更新为Batman

function Batman(id,params){
  this.id=id;
  Object.keys(params).forEach(key => this[key] = params[key])
}


x=new Batman("my_id",{fname:"jason",lname:"bourne"});
console.log("id: "+x.id); // works fine
console.log("fname: "+x.fname); // would like to get this to work...