首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测本机原型与扩展原型

检测本机原型与扩展原型
EN

Stack Overflow用户
提问于 2018-01-21 15:08:44
回答 3查看 36关注 0票数 2

在一些第三方库中,扩展了数组原型:

代码语言:javascript
复制
Array.prototype.repeat = function(value, length) {
    while (length) this[--length] = value;
    return this;
};

代码:

代码语言:javascript
复制
var model = {
  features:[1,2,3]
};


for (var p in model.features) {
  console.log(p);
}

预期:

代码语言:javascript
复制
1
2
3

结果:

代码语言:javascript
复制
1
2
3
repeat

我的代码如何正确地确定超出正常原型的属性并跳过它们?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-21 15:17:35

有许多方法可以在JavaScript中迭代数组。在选择一个时,您可能需要考虑以下几个方面

  • 浏览器支持(请注意,如果您使用像Babel这样的转发器,那么您可以自由选择任何)
  • 效率(尽管许多现代浏览器对Array.prototype上的方法进行了优化,但它们仍然比循环的标准要慢)。
  • 可读性(应该清楚代码的部分负责什么,某些模式比其他模式更适合于某些情况)
  • immutability (已经观察到状态中的隐式更改应该避免,因此使用迭代器来保证迭代数组的不可变性是一个好习惯)。

从我自己的观察来看,我可以看出,Array.prototype.map()是开发人员使用转运机和函数式编程范例的更好选择。

为了回圈

for..in

虽然不建议使用for..in来迭代数组,但您可以使用Object.prototype.hasOwnProperty()进行迭代,如下所示。

代码语言:javascript
复制
for (const p in model.features) {
  if (model.features.hasOwnProperty(p)) {
    console.log(model.features[p]);
  }
}

结果在

代码语言:javascript
复制
1
2
3

for..of

但是,您可以使用for...of代替,这将是在处理数组时推荐的。

代码语言:javascript
复制
for (const feature of model.features) {
  console.log(feature);
}

for

这是您最好的选择,如果您不使用转换程序,并希望确保您的代码工作在任何浏览器。

代码语言:javascript
复制
for(var i = 0; i < model.features.length; i++) {
  console.log(model.features[i]);
}

Array.prototype

Array.prototype上也有内置的方法值得注意。

Array.prototype.forEach()

代码语言:javascript
复制
arr.forEach((value, index, array) => {

});

Array.prototype.map()

代码语言:javascript
复制
arr.map((value, index, array) => {

});
票数 0
EN

Stack Overflow用户

发布于 2018-01-21 15:14:26

给定所讨论的代码,可以使用forfor..of循环来迭代数组

票数 0
EN

Stack Overflow用户

发布于 2018-01-21 15:17:50

您需要检查.hasOwnProperty -> https://jsfiddle.net/xbdd6q13/2/这里的工作代码

或者你也可以用for..of代替for..in

代码语言:javascript
复制
for (var p of model.features) {
                console.log(p);    
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48368224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档