2013-01-24 23 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

相關問題