Dieser Artikel bietet Ihnen eine Einführung in die Methoden zur Beurteilung von JavaScript-Typen (Codebeispiele). Ich hoffe, dass er Ihnen als Referenz dienen wird.
Beurteilung des JS-Datentyps
Manchmal ist es notwendig, den Datentyp zu beurteilen und sich mit verschiedenen komplexen logischen Beurteilungen zu befassen. Beginnen wir mit den am häufigsten verwendeten.
1.typeof
Der Operator „typeof“ gibt eine Zeichenfolge zurück und stellt den Typ der Variablen dar.
typeof oper / typeof (operand)
var testString = 'adus', testArray = [], testBoolean = true, testNumber = 0, testObject = {}, testNull = null, testUndefined = undefined console.log(typeof testString);//string console.log(typeof testArray);//object console.log(typeof testBoolean);//boolean console.log(typeof testNumber);//number console.log(typeof testObjec);//object console.log(typeof testNull);//object console.log(typeof testUndefined);//undefined
Natürlich gibt es nicht nur die oben genannten Grundtypen, sondern auch die folgenden:
Symbol (neu in ECMAScript 6) „symbol“
Hostobjekt (bereitgestellt von der JS-Umgebung) Implementierungsabhängig
Funktionsobjekt ([[Call]] ist in der ECMA-262-Klausel implementiert) „function“
咦? Etwas stimmt nicht. Warum sind Arrays, Null usw. alles Objekte? ? ? Bitte schauen Sie sich
Instanzen von Funktions- oder Array-Typen an, bei denen es sich tatsächlich um Erweiterungen handelt, die auf Objektinstanzen basieren. Es hat einfach noch mehr einzigartige Eigenschaften.
In der ursprünglichen Implementierung von JavaScript wurde ein Wert in JavaScript durch ein Tag dargestellt, das den Typ und den tatsächlichen Datenwert darstellte. Das Typ-Tag des Objekts ist 0.
Weil null einen Nullzeiger darstellt (der Wert ist auf den meisten Plattformen 0x00).
Daher wird auch das Typ-Tag von null zu 0 und typeof null gibt fälschlicherweise „Objekt“ zurück. (Referenz)
2.instanceof
Der Operator „instanceof“ wird verwendet, um zu testen, ob das Prototypattribut des Konstruktors irgendwo in der Prototypenkette des Objekts vorkommt Variable ist eine bestimmte Instanz des Objekts.
Objektinstanz des Konstruktors
zu erkennendes Objekt/Konstruktorkonstruktor
function fnc(){} var newFnc = new fnc(); console.log(newFnc.__proto__ == fnc.prototype);//true console.log( newFnc instanceof fnc ) //true /*String对象和Date对象都属于Object类型和一些特殊情况*/ var simpleStr = "This is a simple string"; var myString = new String(); var newStr = new String("String created with constructor"); var myDate = new Date(); var myObj = {}; var myNonObj = Object.create(null); simpleStr instanceof String; // 返回 false, 检查原型链会找到 undefined myString instanceof String; // 返回 true newStr instanceof String; // 返回 true myString instanceof Object; // 返回 true myObj instanceof Object; // 返回 true, 尽管原型没有定义 ({}) instanceof Object; // 返回 true, 同上 myNonObj instanceof Object; // 返回 false, 一种创建对象的方法,这种方法创建的对象不是Object的一个实例 myString instanceof Date; //返回 false myDate instanceof Date; // 返回 true myDate instanceof Object; // 返回 true myDate instanceof String; // 返回 false
3.Object.prototype.toString()
Jedes Objekt Es gibt ein toString()-Methode, die automatisch aufgerufen wird, wenn das Objekt als Textwert dargestellt wird oder wenn auf ein Objekt in der erwarteten Zeichenfolgenart verwiesen wird. Standardmäßig wird die toString()-Methode von jedem Object-Objekt geerbt. Wenn diese Methode in einem benutzerdefinierten Objekt nicht überschrieben wird, gibt toString() „[Objekttyp]“ zurück, wobei Typ der Typ des Objekts ist.
Function.prototype.call( thisArg ) / Function.prototype.apply( thisArg )
Übergeben Sie das zu prüfende Objekt als ersten Parameter, genannt thisArg.
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] //Since JavaScript 1.8.5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null]
Die Verwendung der geeigneten Methode im entsprechenden Szenario erspart Ihnen Sorgen und stellt die Einfachheit und Robustheit des Codes sicher.
Das obige ist der detaillierte Inhalt vonEinführung in JavaScript-Typbeurteilungsmethoden (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!