2017-12-21 9 views
-2

JavaScriptを使用するTestComplete(UIテスト)プロジェクトがあり、クラス参照をJSONに格納しようとしています。私のコードは機能していないようですので、JSONでJavaScriptがクラス参照を処理する方法について、概念的に誤解があるかもしれません。ここで思考の私のラインを実証コードは次のとおりです。JavaScript:JSON配列からクラスをインスタンス化する

class MyClass { 
    constructor() { 
    this.name = "ClassName"; 
    } 
} 

function print_name(str_name) { 
    console.log(str_name); 
} 

let my_json = { 
    "keyOne": [ 
     MyClass 
    ] 
}; 

let class_ref = my_json["keyOne"][0]; 
print_name(class_ref.name); 

はprint_name機能は、MyClassのオブジェクトの「名前」プロパティを印刷するように失敗する理由はありますか?

+0

あなたがする必要がありますクラスのインスタンスを作成します。 – Li357

+0

let class_ref = my_json ["keyOne"] [0]; – Drew

+1

いいえ、実際のインスタンス: '' keyOne ':[new MyClass()] ' – Li357

答えて

1

短い答え:はい。その 理由と正しいコードは、この

let my_json = { 
"keyOne": [ 
    new MyClass() 
    ] 
}; 

が好きでなければならないがありますなぜですか?

あなたはクラスのインスタンスを保存する必要があるためではないクラス自身 、あなたはこのコードをチェックする場合はJavascriptをに我々は

ところで、コンストラクタ関数が続く新しいキーワードを使用することを行うには

コンソールで
typeof MyClass 

あなたは 機能を取得しますが、その新しい構文は、ES2015とJavascriptの目の新しいバージョンが来ますメイクでたくさんの 簡単に、あなたのコードでの作業は

function MyClass(){ 
this.name = "ClassName"; 
} 

と同じであるので、これは青写真として機能し、あなたのようなコンストラクタ 続い新しいキーワードを使用する必要があるオブジェクトを作成しますあなたはクラス名をgitのでしょう

mySimpleClass.nameを慰める場合は、今この

let mySimpleClass = new MyClass(); 

注: - あなたが実際にJSON 使用にごmy_json変数を変換したい場合は、この

JSON.stringify(my_json); 

は、より多くを学ぶ:

Working with Javascript Objects

JSON.stringify()

+0

それは正しいようだ、私はそれを試してみましょう。ありがとうございました! – Drew

+0

ようこそ@Drew –

関連する問題