• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:生成する際、オブジェクトリテラルに引数を渡すには?)

オブジェクトリテラルでの引数渡し

このQ&Aのポイント
  • オブジェクトリテラルでのメソッド定義では、引数を直接渡すことはできません。
  • 代わりに、オブジェクト内でプロパティとして引数を指定し、メソッド内でそのプロパティを参照する必要があります。
  • 例えば、上記の場合は以下のように書くことができます。 var man = { name: '伊藤', aisatu: function() { alert('こんにちは' + this.name); } }; man.aisatu();

質問者が選んだベストアンサー

  • ベストアンサー
  • gorusura
  • ベストアンサー率59% (25/42)
回答No.2

詳しい仕様は知らないのですが、new を使った場合、 function fn (a, b) { this.x = a; this.y = b; } var instance = new fn; という場合は、暗黙のルールのようなもので、 function fn (a, b) { this = {}; this.x = a; this.y = b; return this; } 大体こんな感じになります。(これは勿論エラーです) ここでは、プロトタイプについてはきにしていません。 new 演算子を使った場合でも、初めから関数が戻り値を返すように書かれている場合は、上記の処理は起きません。 ほぼ同じようにすればいいです。 function Man(name) { return { myouji: name, aisatu: function () { alert('こんにちは' + this.myouji); } }; }

re97
質問者

お礼

回答ありがとうございました。 参考になりましたー

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • gorusura
  • ベストアンサー率59% (25/42)
回答No.1

new 演算子を使わずに、ってことで良いんでしょうか。 function Man(name) { return { aisatu: function () { alert('こんにちは' + name); } }; } var man = Man('伊藤'); //new Man('伊藤')でも一緒の事。 man.aisatu();

re97
質問者

補足

・回答ありがとうございました。 ・期待通りに動作しました。 ・動作したのですが、ちょっとよく分からないのですが、教えてください ・returnはなぜ必要なのでしょうか?(外すとエラーになるのは何故?) ・また、下記を「オブジェクト・リテラル」で書き直すことは出来るでしょうか? function Man(name) {  this.myouji = name;  this.aisatu = function() {   alert('こんにちは' + this.myouji);  } } var man = new Man('伊藤'); man.aisatu();

すると、全ての回答が全文表示されます。

関連するQ&A