2012-02-11 14 views
0

私はHTML 5アプリケーションを開発しています。 JavaScriptでオブジェクトをカスタムクラスにキャストする

私は、カスタムクラスとハッシュテーブルの実装を定義している:

function Card(newId, newName, newDescription) 
{ 
    this.id = newId; 
    this.name = newName; 
    this.description = newDescription; 
} 

function HashTable() 
{ 
    var hashTableItems = {}; 

    this.SetItem = function(key, value) 
    { 
     hashTableItems[key] = value; 
    } 

    this.GetItem = function(key) 
    { 
     return hashTableItems[key]; 
    } 
} 

私はカードのオブジェクトを追加するハッシュテーブルを使用します。私は、カードを追加するには、このコードを使用します。私はHashTable.GetItemを呼び出すと、私はカードのクラスに返されたオブジェクトをキャストする方法がわからないとき

... 
var card = new Card(id, name, description); 

$.viacognitaspace.cards.SetItem(id, card); 
... 

私の問題はあります。

var cardObject = $.viacognitaspace.cards.GetItem(cardNumber); 

ここで、cardObjectは未定義です。私はこれを行う場合は

$('#cardName').text(cardObject.name); 

私はエラーを取得します。

どうすればこの問題を解決できますか?

+2

私たちは、コードの残りの部分を参照する必要があります。あなたはカード番号の場所に何かを追加しますか?それは私には問題と思われます。 – Hogan

+0

'cardObject'は未定義ですが、ハッシュテーブルにはありませんが、キャストとは関係ありません。カードオブジェクトを「セット」するだけで、カードオブジェクトが「取得」される(または未定義) – ori

+0

私は質問を更新しました。ここで、HastTableにCardオブジェクトを追加する方法を確認できます。 – VansFannel

答えて

0

は、次のようにコードを変更してみてください。

$.viacognitaspace = {} /* define namespace if not already defined... */ 

var card = new Card(id, name, description); 

/* the "new" keyword creats an instance of your HashTable function 
    which allows you to reference and modify it later on... */ 
$.viacognitaspace.cards = new HashTable(); 

$.viacognitaspace.cards.SetItem(id, card); 

ます。またHashTable functionのインスタンスを作成する必要があります。

例:

http://jsfiddle.net/3BWpM/

関連する問題