【发布时间】:2014-10-10 06:19:34
【问题描述】:
我只是在学习 javascript,但遇到了与范围界定相关的问题。
这是代码
function User (properties) {
for (var i in properties) {
(function () {
this ['get' + i] = function () {
return properties [i];
};
}) ();
}
}
var me = new User ({
Id : 54,
Name : 'ohyou'
});
console.log (me.getName ());
console.log (me.getId ());
我希望它如何工作:它应该创建两个函数 getName 和 getId 属于 me 对象。
它是如何工作的:它创建了两个我想要的函数,但它们属于window
我尝试了什么:
我尝试删除第 3 行的函数。它执行我想要的操作,但现在它返回
name"ohyou" 两次,而不是返回id和name我尝试使用
window范围内的函数,但前一种情况的问题仍然存在 - 它两次返回name。
问题:我做错了什么以及如何让它按我的意愿工作?
附:使用电话发布此帖子,对于可能的拼写错误或格式问题,我们深表歉意。另外,请原谅我的英语水平。
【问题讨论】:
-
这可能是某处重复的副本。最佳解决方案 IMO 是放弃循环,并使用
Object.keys(properties).forEach, -
可以处理
this也可以处理that。 stackoverflow.com/questions/4886632/… -
已将循环更改为您建议的功能,但显然它不起作用。
标签: javascript