获取coffeescript类的名称?
以下警报是否会在所有浏览器中显示为“Foo”,即使缩小了浏览器的大小获取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; })();
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吗@马克·安德烈·拉福