2017-04-21 5 views
-1

私はオブジェクトと関数を研究しており、以下のコードが何であるか把握できません。私はオブジェクトのために見つけることができるすべての宣言型を見てきましたが、このようなものを見つけることはできません。ここでは、コードは次のとおりです。これはオブジェクトか関数か他のものですか?

new Maplace({ 
     locations: SampleLocations, 
     map_div: '.gmap-container', 
     name: 'Map' 
    }); 

私が見た最も近いがこれです:

var person = new Object(); 

最後に(それはそれが何であるかである場合)私は、オブジェクトのプロパティのいずれかを編集しようとしています。例えば、私のスクリプトでlocationsを更新したいと思います。

これが関数の場合、前にkey:valueのペアを持つ関数は見ていません。このプラグインを使用している間

console.log(Maplace.name); 

私は(maplacejs.com)このコードを持って:これはオブジェクトである場合、私はこのしようとすると、なぜ私は常にエラーを記録します。私はそのスクリプトを見て、(私はかなりJSに新しいので)私はオブジェクトのプロパティの1つを更新する方法を見つけることができません。しかし、セットアップ文書では、Maplaceオブジェクトの新しいインスタンスを作成する方法です。

+1

クラスの新しいインスタンスを宣言するの 'その作者が明らかにオブジェクトを引数として受け入れている。 –

+1

-1は誰かがあなたの質問に投票したことを意味します。それがどのように働くのかを見てください。 – BWMustang13

+1

質問は私の質問に答えて彼のコードを動作させるのに十分なほど明確でした。 –

答えて

1

コードは、コンストラクタ関数を呼び出して新しいオブジェクトを作成しています。コンストラクタ関数の単一のパラメータはオブジェクトです。下記のコードは同じことをしています:

var myObject = { 
    locations: SampleLocations, 
    map_div: '.gmap-container', 
    name: 'Map' 
}; 

new Maplace(myObject); 

2つのステップを明示的にすると、より明確になります。

しかし、上記のコードは1つの理由から少し奇妙です。 newキーワードを使用すると、新しいオブジェクトが作成されます。上のコードはそのオブジェクトを格納していませんが、それは一見オブジェクトをスローします。あるいは、おそらくMaplaceのコードは、グローバル変数やその他の副作用の作成のような予期せぬことをしています。私が疑われたよう

var myMaPlace = new Maplace(myObject); 

、およびreading the docslooking at the code時、例はすべてのいずれか添付し、直ちにLoadメソッドを呼び出し、新しいオブジェクトまたはを格納する変数を使用します。通常は、変数に新しいオブジェクトを格納しますhtml要素にマップし、すぐに地図を表示します。この場合、オブジェクトは「スローされます」が、マップは既に表示されているので、OKである可能性があります。

また、ドキュメントによると、あなたはLoadメソッドを使用してオプションを変更することができますので、私はこのような何かが仕事と想像(テストしていません):

var myMap = new Maplace({ 
    locations: SampleLocations, 
    map_div: '.gmap-container', 
    name: 'Map' 
}).Load(); 

// Later 
myMap.Load({ locations: newLocations }); 
+0

はい、これは多くの助けになりました、ありがとう! –

+0

これは私が混乱する理由です:JS doc(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Using_a_constructor_function)をもう一度読みましたが、新しいものから始まるものはありません。常にvarで始まります。 –

+1

私は 'new'についてもっと詳しく説明しました。あなたが投稿したコードは確かに奇妙に見えます。 –

関連する問題