首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Coffeescript中使用Javascript的for (attr in this)

如何在Coffeescript中使用Javascript的for (attr in this)
EN

Stack Overflow用户
提问于 2011-04-22 11:40:04
回答 3查看 4.2K关注 0票数 17

在Javascript中,"for (attr In this)“的使用通常是危险的……我同意。这是我喜欢Coffeescript的原因之一。然而,我正在用Coffeescript编程,并且有一个需要Javascript的"for (attr in this)“的情况。在Coffeescript中有这样做的好方法吗?

我现在正在做的是用嵌入的原始Javascript编写一堆逻辑,例如:

代码语言:javascript
复制
...coffeescript here...
for (attr in this) {
  if (stuff here) {
    etc
  }
}

使用尽可能小的Javascript会很好……对于如何实现这一点并最大限度地使用Coffeescript,有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-23 00:59:14

您可以使用for attr, value of object,而不是遍历数组的for item in items,它的工作方式更像JS中的for in

代码语言:javascript
复制
for own attr, value of this
  if attr == 'foo' && value == 'bar'
    console.log 'Found a foobar!'

编译:https://gist.github.com/62860f0c07d60320151c

它同时接受循环中的键和值,这非常方便。您可以将own关键字直接插入到for之后,以强制执行if object.hasOwnProperty(attr)检查,该检查将从原型中过滤出您不想要的任何内容。

票数 17
EN

Stack Overflow用户

发布于 2011-04-23 01:41:33

Squeegy的答案是正确的。让我修正一下,添加一个通常的解决方案来解决JavaScript的for...in是“危险的”(通过包含原型属性)就是添加一个hasOwnProperty检查。CoffeeScript可以使用特殊的own关键字自动执行此操作:

代码语言:javascript
复制
for own attr of this
  ...

等同于JavaScript

代码语言:javascript
复制
for (attr in this) {
  if (!Object.prototype.hasOwnProperty(this, attr)) continue;
  ...
}

当您不确定应该使用for...of还是for own...of时,使用own通常更安全。

票数 6
EN

Stack Overflow用户

发布于 2011-04-22 11:48:07

您可以使用for x in yfor x of y,具体取决于您希望如何解释元素列表。CoffeeScript的最新版本旨在解决这个问题,您可以通过一个问题(已经实现并关闭) here on GitHub来了解它的新用法

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

https://stackoverflow.com/questions/5752059

复制
相关文章

相似问题

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