如何在Coffeescript中使用Javascript(attr)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

在Javascript中,“for(attr in this)”通常很危险......我同意。这是我喜欢Coffeescript的原因之一。然而,我在Coffeescript编程,并有一个案例,我需要Javascript的“for(attr in this)”。在Coffeescript中有这样做的好方法吗?

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

...coffeescript here...
for (attr in this) {
  if (stuff here) {
    etc
  }
}

尽可能使用尽可能少的Javascript是很好的...对于如何实现这一目标并最大限度地利用Coffeescript有什么建议?

提问于
用户回答回答于

而不是for item in items迭代通过数组,你可以使用for attr, value of object,它更像for inJS 一样工作。

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)检查,该检查应该过滤出你不想要的原型中的任何内容。

用户回答回答于

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

for own attr of this
  ...

相当于JavaScript

for (attr in this) {
  if (!Object.prototype.hasOwnProperty(this, attr)) continue;
  ...
}

当关于是否应该使用疑问for...of或者for own...of,它通常是使用更安全own

扫码关注云+社区