Lassen Sie sich nicht durch die Tatsache verwirren, dass Zeichenfolgen, Zahlen und boolesche Literale als Objekte mit Eigenschaften betrachtet werden können (z. B. true.toString()
). Wenn diese Grundwerte als Objekte behandelt werden, indem versucht wird, auf ihre Eigenschaften zuzugreifen, erstellt JavaScript aus dem dem Grundelement zugeordneten Konstruktor ein Wrapper-Objekt, sodass auf die Eigenschaften und Methoden des Wrapper-Objekts zugegriffen werden kann.
Sobald auf die Eigenschaft zugegriffen wird, wird das Wrapper-Objekt verworfen. Diese Konvertierung ermöglicht es uns, Code zu schreiben, der so aussieht, als ob der ursprüngliche Wert tatsächlich ein Objekt wäre. Um ehrlich zu sein: Wenn es im Code als Objekt behandelt wird, konvertiert JavaScript es in ein Objekt, damit der Zugriff auf Eigenschaften funktioniert, und konvertiert es dann nach der Rückgabe des Werts wieder in den ursprünglichen Wert. Das Wichtigste, was Sie hier beachten sollten, ist, was vor sich geht, und JavaScript erledigt das hinter den Kulissen für Sie.
Hier sind einige Beispiele, um zu veranschaulichen, wovon ich spreche:
String-Beispiel: sample56.html
<!DOCTYPE html><html lang="en"><body><script> // String object treated like an object. var stringObject = new String('foo'); console.log(stringObject.length); // Logs 3. console.log(stringObject['length']); // Logs 3. // String literal/primitive converted to an object when treated as an object. var stringLiteral = 'foo'; console.log(stringLiteral.length); // Logs 3. console.log(stringLiteral['length']); // Logs 3. console.log('bar'.length); // Logs 3. console.log('bar'['length']); // Logs 3. </script></body></html>
Numerisches Beispiel: sample57.html
<!DOCTYPE html><html lang="en"><body><script> // Number object treated like an object. var numberObject = new Number(1.10023); console.log(numberObject.toFixed()); // Logs 1. console.log(numberObject['toFixed']()); // Logs 1. // Number literal/primitive converted to an object when treated as an object. var numberLiteral = 1.10023; console.log(numberLiteral.toFixed()); // Logs 1. console.log(numberLiteral['toFixed']()); // Logs 1. console.log((1234).toString()); // Logs '1234'. console.log(1234['toString']()); // Logs '1234'. </script></body></html>
Boolesches Beispiel: sample58.html
<!DOCTYPE html><html lang="en"><body><script> // Boolean object treated like an object. var booleanObject = new Boolean(0); console.log(booleanObject.toString()); // Logs 'false'. console.log(booleanObject['toString']()); // Logs 'false'. // Boolean literal/primitive converted to an object when treated as an object. var booleanLiteral = false; console.log(booleanLiteral.toString()); // Logs 'false'. console.log(booleanLiteral['toString']()); // Logs 'false'. console.log((true).toString()); // Logs 'true'. console.log(true['toString']()); // Logs 'true'. </script></body></html>
Beim direkten Zugriff auf die Eigenschaften einer Rohzahl (nicht in einer Variablen gespeichert) muss die Zahl berechnet werden, bevor der Wert als Objekt behandelt werden kann (z. B. (1).toString();
或1..toString();
). Warum zwei Punkte? Der erste Punkt wird als numerische Dezimalzahl behandelt und nicht als Operator für den Zugriff auf die Eigenschaften des Objekts.
Literal-/Rohwerte, die Zeichenfolgen, Zahlen oder boolesche Werte darstellen, werden schneller und in einer prägnanteren Literalform geschrieben.
Daher sollten Sie Literalwerte verwenden. Außerdem typeof
运算符的准确性取决于您创建值的方式(文字与构造函数调用)。如果您创建字符串、数字或布尔对象,则 typeof
运算符会将类型报告为对象。如果您使用文字,则 typeof
运算符将返回实际值类型的字符串名称(例如,typeof 'foo' // returns 'string'
).
Ich demonstriere diese Tatsache im folgenden Code.
Beispiel: sample59.html
<!DOCTYPE html><html lang="en"><body><script> // String, number, and Boolean objects. console.log(typeof new String('foo')); // Logs 'object'. console.log(typeof new Number(1)); // Logs 'object'. console.log(typeof new Boolean(true)); // Logs 'object'. // String, number, and Boolean literals/primitives. console.log(typeof 'foo'); // Logs 'string'. console.log(typeof 1); // Logs 'number'. console.log(typeof true); // Logs 'boolean'. </script></body></html>
Wenn Ihr Programm vom typeof
运算符来根据这些基本类型识别字符串、数字或布尔值,则应避免使用 String
、Number
和 Boolean
Konstruktor abhängt.
Das obige ist der detaillierte Inhalt vonVerwenden Sie einfache Zeichenfolgen, Zahlen und boolesche Werte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!