首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在雄辩的critter.act第7章中,每个生物在JavaScript数组中是如何唯一的?

在雄辩的critter.act第7章中,每个生物在JavaScript数组中是如何唯一的?
EN

Stack Overflow用户
提问于 2015-11-24 11:56:49
回答 1查看 65关注 0票数 2

我正在研究雄辩的JavaScript第7章,并试图在World.prototype.turn函数中使用forEach完成这个部分:

6OGIzAd5Tr

代码语言:javascript
复制
World.prototype.turn = function() {
  var acted = [];
  this.grid.forEach(function(critter, vector) {
    console.log(critter);
    if (critter.act && acted.indexOf(critter) == -1) {
      acted.push(critter);
      this.letAct(critter, vector);
    }
  }, this);
};

我明白这是在做什么(我认为),它正在遍历网格数组中的每个项目,对于找到的每一个生物(所有的生物都在他们的原型中有一个动作方法),它正在检查本地数组中的indexOf。如果它不存在(-1),它就会把它推进去。

我的问题是,每一种生物是如何独特的?当我console.log(critter)时,我得到相同的结果:{ direction: 'e', originChar: 'o' }

在将第一个标准推到数组之后,这怎么不总是将-1作为indexOf()返回呢?

是因为在elementFromChar中,每个生物都是从带有new的BouncingCritter构造函数中创建的吗?

先谢谢你,试着彻底地学习并正确地理解它:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-24 12:07:56

在Javascript中,对象具有固有的唯一性,因此

代码语言:javascript
复制
var x = { foo: 'bar' };
var y = { foo: 'bar' };
x !== y;

// But
var x = { foo: bar }
x === x;

这是一个复杂的主题,你可以读到更多关于这里的内容。本质上,indexOf是在检查那个确切的对象,而不管它的属性值如何。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33893076

复制
相关文章

相似问题

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