Eigene Objekte in JavaScript definieren

In JavaScript gibt es verschiedene Wege, um ein Objekt zu erstellen. Die bewährteste Definition ist Folgende:

1
2
3
4
5
6
7
8
9
10
var simpson = {
  BART: "Bart Simpson",
  HOMER: "Homer Simpson",
  LISA: "Lisa Simpson",
  MAGGIE: "Margaret Simpson",
  MARGE: "Marjorie Simpson"
}
 
console.log(typeof(simpson)); // object
console.log(simpson.HOMER); // Homer Simpson

Im Zuge der Objektorientierung wurde das Schlüsselwort new in JavaScript eingeführt, um Programmierern aus der OOP-Welt den Einstieg zu erleichtern. Damit kann ebenfalls ein Objekt definiert werden:

1
2
3
4
5
6
7
8
9
var simpson = new Object();
simpson.BART = "Bart Simpson";
simpson.HOMER = "Homer Simpson";
simpson.LISA = "Lisa Simpson";
simpson.MAGGIE = "Margaret Simpson";
simpson.MARGE = "Marjorie Simpson";
 
console.log(typeof(simpson)); // object
console.log(simpson.HOMER); // Homer Simpson

Elijah Manor schreibt in seinem Artikel „How Good C# Habits can Encourage Bad JavaScript Habits – Part 1“ das von der Verwendung von new Object() abzuraten ist, weil das new Object() wohl nur zu einem {} umgewandelt wird und somit dasselbe ist aber eben eine zusätzliche Umwandlungsoperation benötigt.

How to send a JSON object with jQuery

Here is an example on how you can send a JSON object to a server with jQuery:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
  var data = {
    "name": "Neugebauer",
    "prename": "Benny",
    "age": 24,	
    "likes": [],        
    "device": "Laptop"
  };
 
  jQuery(document).ready(function($){
    $.ajax({
      type: "POST",
      url: "https://www.bennyn.de/rest-service/something",
      data: typeof data == "string" ? data : JSON.stringify(data || {}),
      dataType: "json",
      contentType: "application/json; charset=utf-8",
      success: function(data, textStatus, jqXHR){
        console.log('OK:' + data);
      },
      error: function(data, textStatus, jqXHR){ 
        console.log('ERROR:' + data);
      }
    });
  });      
</script>