【发布时间】:2014-11-19 00:02:33
【问题描述】:
是否可以实现“迭代”函数(如下)来迭代它自己的不使用已弃用 JavaScript 功能的变量?
(function () {
var a = 1;
var b = 2;
var iterate = function () {
var k;
for (k in this) { //WRONG IMPLEMENTATION!
alert(this[k]);
// a
// b
// iterate
}
};
}).call(this);
我在“迭代”中设置了一个断点,并在调试器中四处寻找,但无法弄清楚如何访问其他变量名。此外,在 Google 搜索了几十次之后,我一直无法找到答案,因为搜索结果通常指的是外部而非内部视角。
更新:我把属性和变量弄糊涂了。在编辑之前,最初的问题是询问迭代属性。我现在意识到这些都是变量。
【问题讨论】:
-
我不会将这些称为“属性”。它们是局部变量。
-
您需要distinguish between variables and properties。属性可以用
Object.getOwnPropertyNames迭代,变量不能。 -
@Pinal,不是那个的复制品。
-
@PeteAlvin 也许您可以更新问题以澄清您想要遍历所有范围内的变量(而不是那些属于对象的变量)?看来我们几个人有同样的误解。
标签: javascript properties closures ecmascript-6