Maison >interface Web >js tutoriel >Introduction aux méthodes de jugement de type JavaScript (exemple de code)

Introduction aux méthodes de jugement de type JavaScript (exemple de code)

不言
不言avant
2019-03-18 11:02:002247parcourir

Ce que cet article vous apporte est une introduction aux méthodes de jugement de type JavaScript (exemples de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Jugement du type de données JS

Parfois, il est nécessaire de juger le type de données et de traiter divers jugements logiques complexes. Commençons par les plus couramment utilisés.

1.typeof

L'opérateur typeof renvoie une chaîne et représente le type de la variable. " symbole"

objet hôte (fourni par l'environnement JS) Dépend de l'implémentation

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
objet fonction ([[Call]] est implémenté dans la clause ECMA-262) "fonction"

Hein ? Quelque chose ne va pas. Pourquoi les tableaux, null, etc. sont-ils tous des objets ? ? ? Veuillez regarder vers le bas pour voir les


instances de types Function ou Array, qui sont en fait des extensions basées sur des instances d'Object. Il a juste des attributs plus uniques.

Dans l'implémentation originale de JavaScript, une valeur en JavaScript était représentée par une balise représentant le type et la valeur réelle des données. La balise de type de l'objet est 0.

Parce que null représente un pointeur nul (la valeur est 0x00 sur la plupart des plateformes).

Par conséquent, la balise de type null devient également 0 et typeof null renvoie "object" de manière incorrecte. (référence)


2.instanceof

L'opérateur instanceof est utilisé pour tester si l'attribut prototype du constructeur apparaît n'importe où dans la chaîne de prototypes de l'objet. En termes simples, cela signifie si un. La variable est une certaine instance de l'objet.

instance d'objet du constructeur

objet objet/constructeur constructeur à détecter

3.Object.prototype.toString()

Chaque objet a un Méthode toString() qui est automatiquement appelée lorsque l'objet est représenté sous forme de valeur texte ou lorsqu'un objet est référencé dans le format de chaîne attendu. Par défaut, la méthode toString() est héritée par chaque objet Object. Si cette méthode n'est pas remplacée dans un objet personnalisé, toString() renvoie "[object type]", où type est le type de l'objet.

Function.prototype.call( thisArg ) / Function.prototype.apply( thisArg )

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
Passez l'objet à vérifier comme premier paramètre, appelé thisArg.

Utiliser la méthode appropriée dans le scénario approprié vous évitera des soucis et garantira la simplicité et la robustesse du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer