繁体   English   中英

JavaScript循环中的访问范围

[英]Access scope in JavaScript loop

我有下面的代码,并且一直在尝试并正在阅读,但仍无法弄清楚如何遍历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... 

你是这个意思吗 看来您的问题在于解析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... 

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

为了遵守惯例,我已经将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... 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM