2016-12-09 5 views
1

私は宿題をしています。コードが期待どおりに動作するようにクラスを作成する必要があります。Javascriptでのオブジェクトの作成に関するテスト

// This is the test input 
movie = new Movie("Star Wars"); 

// Expected Output  
[Movie "Star Wars"] // Expected output 

私の質問はどのようなものですか?

私が理解するように、彼らは私にES5でクラスを書くように求めています。これまでのコードはここにあります

var Movie = function Movie(title) { 
    this.title = title; 
    this.header = this.title = (title) ? "[Movie \"" + title + "\"]": "[Movie]"; 
    this.show = function(){ 
    console.log('Your movie is on theaters'); 
    } 

} 


movie = new Movie("Lord Of The Rings"); // [object Object] 

私はここに何か不足していますか?

UPDATE 1:@loïc-faure-lacroixのように、これを解決するコードを示します。

+1

、あなたが変更したくない:あなたはすでに機能という名前のムービーを定義しているため

それは、次の手順を実行しても無駄です映画の名前? – krillgar

+0

すべてが問題ありません。 Javascriptは自動的にこれらのことをしませんし、他の言語でもあなたがタイトルフィールドを表示することを期待していると推測できます。 –

+0

'function Movie(title)' - 'Movie'を削除します。あなたはすでに関数に等号の反対側の名前を与えています。 –

答えて

2

あなたが探しているのは、オブジェクトを文字列に変換する方法です。 html要素にオブジェクトを追加しない限り、あなたが探しているのはtoStringメソッドを定義することです。

Movie.prototype.toString = function() { 
    return this.title 
} 

コンソールにはオブジェクトがいくつかのインタープリタで表示されますが、すべてのコンソールでサポートされているかどうかは不明です。

技術的には、firefoxのようないくつかのコンソールはオブジェクトへの気の利いたリンクを使用するため、機能しません。しかし、文字列に連結したい場合、それはtoStringを呼び出してオブジェクトを文字列に適切に変換します。しかし、文字列に変換されていない生のオブジェクトの出力は、私が知る限り、未定義です。

注:私はあなたの「期待される出力」に仮定してい

var Movie = function Movie() { ...} 
+0

これはうまくいきました。私はあなたのコードをクラス宣言の中に追加しました。そして、それは魅力的に機能しました。本当にありがとう。私はあなたの答えの実装を示すために質問を更新します。 なぜそれがそのように動作するのか、この場合にtoStringメソッドが関連するのかについて、より多くの情報を提供できますか? –

+0

@JaimeRiosそれはすでに答えている。オブジェクトを文字列に変換します。 –

+0

ああ、私は今それを参照してください。 –

関連する問題