2013-01-24 24 views
0

下面是一个代码示例怎么看如果一个类已被实例化

class person 
    constructor: (@name, @age) -> 

bob = new person("bob", 11) 

if person? 
    alert "yes!" 
else 
    alert "no" 

在此,笔者测试,如果一个人的类实例化,并提醒“是!”就像它应该的那样。因为鲍勃是一个人,并被实例化。

但在这里:

class person 
    constructor: (@name, @age) -> 

if person? 
    alert "yes!" 
else 
    alert "no" 

我想这提醒“不”,因为没有人被实例化,但它仍然提醒“是的!”

那么测试一个类是否被实例化的正确方法是什么?

澄清:

我不希望测试和看到的是鲍勃。我想看看是否有任何形式的人出现过。

+0

''人不检查,如果一个人可以被实例化,但它命名变量或函数'的人吗? '存在(它确实,它是你的构造函数)。 – bfavaretto

+0

我相信你的意思是“鲍勃?”,而不是“人?”。 – jbabey

+0

可能重复[什么是最简单的方法来测试coffeescript的类成员资格?](http://stackoverflow.com/questions/5933569/what-is-the-easiest-way-to-test-for-class-会员在咖啡标记) – jbabey

回答

1

您正在测试以查看是否定义了人员类别。这将完成你想要的。

class person 
    constructor: (@name, @age) -> 
    person.prototype.instantiated = true 

if person.prototype.instantiated 
    alert "yes!" 
else 
    alert "no" 
+0

我得到这个错误:Uncaught TypeError:无法读取未定义的属性'instantiated' –

+0

似乎在粘贴在http://coffeescript.org/ – cratonica

+0

cratonica的沙盒上工作,你是对的。这是我的代码在我的更大项目中的一个问题。谢谢=) –

1

与上述相同的答案,但有更多的CoffeeScript的语法:

class person 
    constructor: (@name, @age) -> person::instantiated = yes 

bob = new person "bob", 11 

if person::instantiated 
    alert "yes!" 
else 
    alert "no" 
+0

啊,很好。投了票。 – cratonica

相关问题