获取coffeescript类的名称?

获取coffeescript类的名称?,coffeescript,introspection,Coffeescript,Introspection,以下警报是否会在所有浏览器中显示为“Foo”,即使缩小了浏览器的大小 class Foo alert(Foo.name) 文档中没有说明任何内容,我知道IE在函数名方面存在问题,我对许多问题感到困惑,例如取决于您使用的CoffeeScript编译器版本的问题。在最新的稳定版本(1.3.3)中,默认情况下不会生成“name”属性 class Foo 汇编成 var Foo; Foo = (function() { function Foo() {} return Foo; })();

以下警报是否会在所有浏览器中显示为“Foo”,即使缩小了浏览器的大小

class Foo

alert(Foo.name)

文档中没有说明任何内容,我知道IE在函数名方面存在问题,我对许多问题感到困惑,例如取决于您使用的CoffeeScript编译器版本的问题。在最新的稳定版本(1.3.3)中,默认情况下不会生成“name”属性

class Foo
汇编成

var Foo;
Foo = (function() {
  function Foo() {}
  return Foo;
})();

由于
name
属性是非标准的,目前IE不支持该属性,因此您不能真正依靠它跨浏览器访问。有关这方面的详细信息可在MDN上获得:

Foo
类的任何方法中,包括在
Foo.prototype
中,您可以插入该行

console.log @constructor.name
它会写的

Foo

到您的控制台日志。HTH.

您是否暗示更高版本或更旧版本将生成name属性?还有一些标志将覆盖此默认值,或者您必须自己添加属性。我认为它实际上已被删除,因此在较旧的版本中,您可能仍然会发现此行为,yes.WRT minified code-它实际上取决于minifier和您传递给它的配置。大多数可以配置为不接触命名函数语句(如UglifyJS的
——无损坏函数
),因此
name
属性在那里应该可以正常工作(除非浏览器根本不支持它)。当然,对于从1.3.3开始手动定义的属性CoffeeScript,它应该始终工作,而不管是否缩小(因为它是作为纯字符串文字属性添加的),现在很清楚(请参见的末尾)它不受支持。如果你也想要的话,去要吧!你不能只用Foo.constructor.name吗@马克·安德烈·拉福