gpt4 book ai didi

javascript - 在 ember.js 中打印数组的问题

转载 作者:行者123 更新时间:2023-11-29 10:17:36 29 4
gpt4 key购买 nike

当我尝试包含 ember.js 库 (ember-1.0.0-rc.7.js) 时,我看到了一些奇怪的东西。

我刚刚打印出一个 javascript 数组的 javacode:

<script type="application/javascript">
var songs = [ 'a','b','c'];

console.debug(songs.toString());
for(key in songs)
{
console.debug(songs[key]);
}

</script>

当我不包含库时,它会在控制台中打印出 a 、 b 、 c 。然而,当我确实包含它时,它开始打印出 a、b、c,以及所有函数...

示例:

function (idx) {
return this.objectAt(idx);
}
function superWrapper() {
var ret, sup = this._super;
this._super = superFunc || K;
ret = func.apply(this, arguments);
this._super = sup;
return ret;
}
function (key) {
return this.mapProperty(key);
}

ember.js 库出现这种情况的任何原因,我该如何解决这个问题?

任何建议表示赞赏,谢谢,

最佳答案

默认情况下,Ember 会扩展内置原型(prototype),例如 Array.prototype,为不支持的浏览器提供额外的方法或 shim ES5 方法。您看到这些方法是因为 for...in iterates over the enumerable properties of an object .这些包括所有属性,甚至包括那些通过原型(prototype)链继承的属性。

相反,您应该使用常规的 for 循环来遍历数组:

for(var i=0; i<songs.length; i++) {
console.debug(songs[i]);
}

这只会遍历实际的数组元素,即带有数字键的属性。不过还有更好的方法,例如使用 ES5 Array.forEach(在旧版浏览器中由 Ember 填充):

songs.forEach(function(song, i) {
console.debug(song);
});

可选地,您可以通过配置 Ember.EXTEND_PROPERTIES 来禁用 Ember 的原型(prototype)扩展。如果您不打算使用它们,或者它们可能与其他库/脚本冲突。有 a whole page在 Ember 文档中专门讨论了这个问题。

关于javascript - 在 ember.js 中打印数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18498925/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com