2017-10-02 3 views
0

私はjavascriptのnoobですが、私はJavaに最も精通しています。インスタンスが代わりに代わり以下のコードの 'marker'インスタンスと 'infoWindow'インスタンスは何が起こっていますか?

var infoWindow = new google.maps.InfoWindow({ 
        content:props.content 

       }); 

var marker = new google.maps.Marker({ 
      position:props.coords, 
      map:map, 
      //icon:props.iconImage 
      }); 

var infoWindow = new InfoWindow({ 
        content:props.content 

       }); 

var marker = new Marker({ 
       position:props.coords, 
       map:map, 
       //icon:props.iconImage 
       }); 

のように書かれていない理由を私は理解していないことはここですフルコード

function addMarker(props){ 
      var marker = new google.maps.Marker({ 
      position:props.coords, 
      map:map, 
      //icon:props.iconImage 
      }); 

      // Check for customicon 
      if(props.iconImage){ 
       // Set icon image 
       marker.setIcon(props.iconImage); 
      } 

      // Check content 
      if(props.content){ 
       var infoWindow = new google.maps.InfoWindow({ 
        content:props.content 

       }); 

       marker.addListener('click', function(){ 
        infoWindow.open(map, marker); 
       }); 
      } 

     } 

私はAPIを使用しているため、この方法が当てはまりますが、なぜこのようにする必要があるのか​​をよりよく理解したいと思います。

+1

「console.log(google.maps)」を試してみてください。chrome devにはマーカーがあり、Infowindowにはそのメソッドがあります –

+0

私はそれが私が見つけたものだと思いました。しかし、MarkerとInfoWindowがJavaのクラス名のように大文字にされた理由は分かりませんでした。 –

答えて

2

ファイル内にimportのJavaクラスとしてMarkerとInfoWindowを使用したいとします。まあ、importというJavascriptのようなものはありません(実際には存在しますが、現時点ではブラウザ環境には存在しません)。

とにかく、Javascriptではすべてがオブジェクトです。 JavascriptオブジェクトはJavaのマップと考えることができます。これらは基本的にキー値構造です。

どこか、使用しているGoogleマップライブラリのコード内に、googleというオブジェクトが定義されています。マップにはオブジェクトという名前のキーが含まれています。このオブジェクトには、MarkerInfoWindowなど、Googleマップライブラリの定義が含まれています。

それは実際にこのようになります。あなたはそのドット表記法を必要とする理由

var gooogle = { 
    maps: { 
    Marker: /* definition of Marker */, 
    InfoWindow: /* definition of InfoWindow */, 
    // ... 
    }  
} 

だこと。 googleオブジェクトのサブサブキーに実際にアクセスしています。これはインポートしたライブラリによって宣言されています。

+0

おかげさまで、話題はありませんが、あなたはちょうど私にJSONだけを説明しましたか? –

+0

しかし、なぜMarkerだけが大文字になりますか? –

+0

2番目のコメントで頼んだことはありませんでした。マーカーだけが大文字になっているわけではなく、InfoWindowもこれです(これはラクダケースと呼ばれます)。最初のものに関しては、これはJSONではありません。 JSONは* javascriptオブジェクトをシリアライズするために使われる標準化されたフォーマットです(これは、プログラムの内部オブジェクトを文字列に変換することを意味します)。だから、JSONとjavascriptのオブジェクト宣言は同じように見えるが、同じ目的を果たさない。 JSONは、プレーンな文字列の中に実際のjavascriptオブジェクトを書き込むためのフォーマットです。ファイルに保存したり、HTTPなどで送信したりする場合に便利です。 – aurelienshz

関連する問題