作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么每次迭代都会这样:
var o = {};
var foo = [['a',1],['b',2],['c',3],['d',4],['e',5]];
for(var i = 0; i < 5; i++)
{
o.__defineGetter__(foo[i][0], function() {
return foo[i][1];
});
console.info(JSON.stringify(o));
}
重置所有先前的分配并输出:
{"a":1}
{"a":2,"b":2}
{"a":3,"b":3,"c":3}
{"a":4,"b":4,"c":4,"d":4}
{"a":5,"b":5,"c":5,"d":5,"e":5}
当我期望/想要完成的是:
{"a":"1","b":"2","c":"3","d":"4","e":"5"}
如何实现我想要的目标?
最佳答案
您需要创建一个函数,该函数返回一个执行您想要的操作的函数(这只是因为闭包在 JavaScript 中的工作方式)。这个例子应该可以工作。
var o = {};
var foo = [['a',1],['b',2],['c',3],['d',4],['e',5]];
var getFunc = function(val){
return function() {
return val;
}
};
for(var i = 0; i < 5; i++)
{
var func = getFunc(foo[i][1]);
o.__defineGetter__(foo[i][0], func);
}
console.info(JSON.stringify(o));
关于javascript - 在循环中设置 javascript DefineGetter 和 DefineSetter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558240/
在我的页面中,我有两个宽度相同的表格,它们都进行水平滚动。当每个表格滚动时,我需要将两个表格设置到相同的位置。 其实我的代码是: var scrollA = $('#scrollA'), sc
为什么每次迭代都会这样: var o = {}; var foo = [['a',1],['b',2],['c',3],['d',4],['e',5]]; for(var i = 0; i < 5;
我是一名优秀的程序员,十分优秀!