2016-05-21 10 views
0

Ich habe ein Problem mit diesem OpenLayers 3 Klassen, die ol.geom.Geometry erweitert. Ich mag den Konstruktor Namen ol.geom.Point zum Beispiel wissen, so dass ich tun:JavaScript - Klassenname

ol.geom.Point.name 

Aber ich nichts, auch wenn ich eine Instanz erstellen und versuchen, den Konstruktor Namen zu erhalten:

var p = new ol.geom.Point([0,0]); p.constructor.name; 

Die Implementierung von ol.geom.Point kann here gefunden werden.

ol.geom.Point = function(coordinates, opt_layout) {...} 

Und ich habe ein jsfiddle getan, um dieses Verhalten zu reproduzieren.

Lesen docs von MDN:

Browser, die ES6 Funktionen implementieren können den Namen einer anonyme Funktion von seiner syntaktischen Position schließen. Zum Beispiel:

var f = function() {}; console.log (f.name); // "f"

Also, was mache ich falsch oder was fehlt mir?

Vielen Dank im Voraus!

+0

Mit welchem ​​Browser testen Sie dies? Soweit ich weiß, wird f.name nur von Firefox unterstützt. –

+0

Ich teste in Firefox. –

+0

Nur neugierig, warum Sie einen Konstruktornamen benötigen. Wenn Sie benutzerdefinierte Eigenschaften festlegen möchten, verwenden Sie 'ol.geom.Point # setProperties'. –

Antwort

2

Um auf die name Eigenschaft wie folgt in Ihrem Szenario zuzugreifen, würde die Verwendung der 'abgeleiteten Namen für anonyme Funktionen' bedeuten. Zum Zeitpunkt des Schreibens wird dies nur von der noch nicht veröffentlichten Version Chrome 51 unterstützt.

Dies wird in den MDN-Dokumenten angegeben, die Sie wahrscheinlich gelesen haben. Weitere Informationen finden Sie in der unteren Browserkompatibilitätstabelle und in der Unterstützung für abgeleitete Namen bei anonymen Funktionen.

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/name

+0

Vielen Dank für Ihre Antwort, aber ich habe in Chrom 51 und kein Ergebnis getestet. –

-1

Das ist ein ist, JavaScript - Blind Spot.


etwas anfordern wie:

var f = function() {}; 
    console.log(f.name); // to return: 
>> f 

ist nichts falsch. Darüber hinaus scheint es aus menschlicher Sicht so natürlich zu sein, zu fragen - aber aus maschineller Sicht ist es so kontraintuitiv, dass Sie, um eine einfache Sache wie dieses Werk zu machen, wahrscheinlich viele Dinge, die Sie wahrscheinlich machen, brechen müssen Liebe. Es könnte einen ziemlich hässlichen Patch erfordern.

, das zu tun, würde & sollte machen es möglich, jeden Zeiger zu fragen, (Variable, unabhängig davon, ob es zu einem primitiven oder ein vollwertiges Objekt zeigt ist) -Was ist seine Variablennamen? Aber als Sie in Schwierigkeiten geraten: - Sollte es seinen Zeigernamen an seinem aktuellen Zustandspunkt oder nur seiner ursprünglichen Anfangszuweisung zurückgeben? Und wenn ja, warum nicht der andere?

Ich würde es lieben. Aber ich vermute, dass es so lange nicht mehr so ​​sein wird ...