2016-06-27 7 views
0

das Symbol spec von hier Reading (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Symbol) sah ich, dass String.prototype diese Liste der Schlüssel enthalten sollte:String.prototype nicht alle Symbole ES6 spec implementieren als Schlüssel

Symbol.match, 

Symbol.replace, 

Symbol.search, 

... und andere

Aber als ich das in Chrome 51.0.2704.103 m getestet habe, stellte sich heraus, dass String.prototype nur Symbol.iterator als Schlüssel enthält.

enter image description here Also was ich nicht richtig verstanden habe, soll String.prototype diese Symboltasten enthalten oder nicht?

Antwort

0

Sie denken wahrscheinlich an die Dinge, die in §6.1.5.1 - Well-Known Symbols aufgeführt sind.

Es ist nicht so String.prototype soll @@match (zum Beispiel) als Schlüssel enthalten, ist es, dass @@match ist ein bekanntes Symbol verwendete durch die Umsetzung der zu String.prototype.match zugewiesene Funktion. Der Schlüssel für diese Funktion auf String.prototype ist ein String, "match", kein Symbol.

+0

Humm OK, aber ist es nicht der Punkt, dass diese bekannten Symbole (@@ iterator, @@ match ... und andere) genau als Schlüssel für Objekteigenschaften und Methoden verwendet werden sollen? Zumindest wird @@ iterator verwendet. Wie könnte @@ match in String.prototype.match verwendet werden? – Hivaga

+2

@Hivaga: Sortieren von. Wie es im ersten Absatz des obigen Links heißt: * "Bekannte Symbole sind eingebaute Symbolwerte, auf die von Algorithmen dieser Spezifikation explizit Bezug genommen wird. Sie werden typischerweise als ** die Schlüssel von Eigenschaften verwendet, deren Werte als Erweiterung dienen Punkte eines Spezifikationsalgorithmus **. "* (meine Betonung)' @@ match' * wird * als Schlüssel an anderer Stelle verwendet, zum Beispiel in 'RegExp.prototype'. Wenn Sie ein bekanntes Symbol für "@@ Übereinstimmung" bereitstellen, können Sie jedes Objekt so definieren, dass es in der Lage ist, eine Übereinstimmung mit einem regulären Ausdruck zu erzielen. Es ist, was zum Beispiel durch die Zusammenfassung "IsRegExp" überprüft wird. –

+0

(Entschuldigung, die Betonung sieht aus wie schreien. Das ist nicht so gemeint.) –

Verwandte Themen