zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Prototype

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 11.01.2013, 21:55
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 13.09.2005
Beiträge: 83
Iago2 befindet sich auf einem aufstrebenden Ast
Standard Prototype

Hallo,
ich habe in PHP mit der OOP angefangen, hab jetzt aber gemerkt, dass (meiner meinung nach) die Prototypen in JavaScript noch um einiges schwieriger zuvestehen sind.
Ich habe eine Frage zu folgendem GoogleMaps Beispiel (Intitialisieren der Karte):

Code:
 var latlng = new google.maps.LatLng(51,9);
      var mapOptions = { zoom: 6,
                         center: latlng,
                         mapTypeId: google.maps.MapTypeId.ROADMAP };

   var map = new google.maps.Map(document.getElementById("map-container"),mapOptions);
Hier wird in der Objektnotation ein Objekt erzeugt, dass im mapOptions-Handle gespeicher wird. Jetzt steht in Wikipedia, dass Prototypen-Objekte aus bereits exisitierenden Objekte durch clonen erzeugt werden. Wo findet im Code oben eben dieses clonen statt?
Vielen Dank!!
Iago
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 12.01.2013, 03:25
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Das Objektliteral ({}) entspricht letztendlich new Object(), wobei das Objekt hier anders erzeugt wird als in PHP. Es gibt keine Klassen, daher dienen prototype und constructor als Vorlage für das neue Objekt.

{} macht also folgendes:
1. Ein neues Objekt wird erzeugt
2. Object.prototype wird als prototype des neuen Objekts gesetzt
3. Der constructor wird ausgeführt (und die Werte zwischen den geschweiften Klammern dem Objekt zugewiesen)
4. Das fertige Objekt wird zurückgegeben

Wenn du auf deinem Objekt eine Methode aufrufst die dort nicht existiert, wird Javascript schauen ob der Prototyp die Methode enthält, wenn nicht wird dessen Prototyp durchsucht, bis hoch zum ersten Prototyp in der Kette, dem Object.prototype. Alle Objekte in Javascript leiten übrigens von Object ab, auch Array, Number, String usw.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 12.01.2013, 03:53
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Iago2 Beitrag anzeigen
Wo findet im Code oben eben dieses clonen statt?
Gar nicht.
Mit Zitat antworten
  #4 (permalink)  
Alt 12.01.2013, 10:50
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 13.09.2005
Beiträge: 83
Iago2 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Gar nicht.
Gut zu wissen! Danke für die Antworten.
Mit Zitat antworten
  #5 (permalink)  
Alt 15.01.2013, 16:58
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 29.07.2005
Beiträge: 1.073
xm22 befindet sich auf einem aufstrebenden Ast
Standard

Das neue Objekt hat keinen Prototyp...
__________________
... Meine Meinung
Mit Zitat antworten
  #6 (permalink)  
Alt 15.01.2013, 17:03
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Wieso? Jedes Objekt hat ein prototype
Mit Zitat antworten
  #7 (permalink)  
Alt 15.01.2013, 18:11
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Jo, jedes Objekt außer Null hat einen Prototyp.
Mit Zitat antworten
  #8 (permalink)  
Alt 15.01.2013, 21:06
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 29.07.2005
Beiträge: 1.073
xm22 befindet sich auf einem aufstrebenden Ast
Standard

Ok, dann mach mal
Code:
var o = {};
Und jetzt zeig mir bitte den Prototyp von o..
__________________
... Meine Meinung
Mit Zitat antworten
  #9 (permalink)  
Alt 15.01.2013, 21:12
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Code:
alert(o.__proto__);
Tatsächlich wird aber kein explizites prototype Objekt erzeugt, das hatte ich auch anders in Erinnerung.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 15.01.2013, 22:14
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Die Sache ist etwas komplizierter. Es gibt den Prototyp, den hat jedes Objekt (wie gesagt abgesehen von Null) und es gibt die prototype-Eigenschaft (Property), die hängt an dem Konstruktor, nicht an der Instanz.

Code:
function SomeObject() {}
var o = new SomeObject();

SomeObject.prototype // -> SomeObject
o.prototype // -> undefined
Object.getPrototypeOf(o) // -> SomeObject
o.__proto__ // -> SomeObject (non standard property used at least by Firefox and Chrome)
Das Objektliteral gibt dir sofort eine Instanz zurück, keinen Konstruktor, daher gibt es dort auch keine Eigenschaft mit Namen prototype allerdings gibt es sehr wohl einen Prototypen.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frontend Entwickler Prototype HTML, CSS (m/w) itchristian Jobs 0 14.03.2012 18:18
jQuery (coda slider) und prototype (Lightbox) konflikt computernerd Javascript & Ajax 3 21.09.2011 20:04
Frage zu Prototype b74 Javascript & Ajax 0 19.01.2009 16:26
Über den Fensterrand Drag'n - Script.Aculo.us und Prototype Lemmi Javascript & Ajax 2 24.03.2008 00:53
Problem mit Prototype Anfragen Posseidon Javascript & Ajax 0 22.11.2007 09:02


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:34 Uhr.