2016-01-15 6 views
6

Der Fehler beim Ausfahren String in ES6

'use strict'; 
 

 
class ReverseString extends String { 
 
    reversed() { 
 
    let res = ''; 
 
    for (let i = this.length - 1; i >= 0; --i) { 
 
     res += this[i]; 
 
    } 
 
    return res; 
 
    } 
 
} 
 

 
let rs = new ReverseString("wangyang"); 
 
console.log(rs.reversed());

, wenn ich diesen Code ausführen, indem ich einen Fehler:

C:\Users\elqstux\Desktop>node wy.js 
C:\Users\elqstux\Desktop\wy.js:14 
console.log(rs.reversed()); 
      ^

TypeError: rs.reversed is not a function 
    at Object.<anonymous> (C:\Users\elqstux\Desktop\wy.js:14:16) 
    at Module._compile (module.js:398:26) 
    at Object.Module._extensions..js (module.js:405:10) 
    at Module.load (module.js:344:32) 
    at Function.Module._load (module.js:301:12) 
    at Function.Module.runMain (module.js:430:10) 
    at startup (node.js:141:18) 
    at node.js:980:3 

Ich kann nicht die Ursache für diesen Fehler finden.

Die Ausgabe von console.log(rs); ist String {0: "w", 1: "a", 2: "n", 3: "g", 4: "y", 5: "a", 6: "n", 7: "g", length: 8, [[PrimitiveValue]]: "wangyang"}].

Hier ist meine Knoten Version:

C:\Users\elqstux\Desktop>node -v 
v5.3.0 
+0

Diese Frage wurde bereits gestellt (http://stackoverflow.com/questions/34605185/failing-to-subclass-builtin-string-object). Grundsätzlich unterstützt Node Subclassing-Einbauten nicht vollständig. Das Hauptproblem ist, dass es nie wirklich eine 'instanceof ReverseString' erzeugt. Knoten sieht nur 'rs' als' String' – CodingIntrigue

Antwort

2

String derzeit in Node 5.3 nicht ableitbaren nach:

https://kangax.github.io/compat-table/es6/#test-miscellaneous_subclassables

Ihr Beispiel sollte auf Firefox funktionieren 45 und Edge 13 +

+0

Ich kann bestätigen, dass es in Webkit nicht funktioniert, aber es funktioniert in Edge! – CoderPi

+0

Sagt * Flag: Unterstützung für dieses Feature inkorrekt erfordert strikten Modus *. Es funktioniert nicht mit irgendeinem Flag oder striktem Modus – CodingIntrigue

+0

@RGraham Das ist wahrscheinlich, weil Knoten 5 "Klasse" außerhalb des strikten Modus nicht unterstützt. –

Verwandte Themen