Table of Contents
Javascript method to determine data type
Home Web Front-end JS Tutorial How to determine data type in javascript

How to determine data type in javascript

Jun 09, 2021 pm 02:26 PM
javascript type of data

JS method to determine data type: 1. Use the typeof operator, the syntax "typeof variable"; 2. Use the instanceof operator; 3. Use the constructor attribute, the syntax "variable.constructor==data type"; 4. Use the toString() function.

How to determine data type in javascript

The operating environment of this tutorial: windows7 system, javascript version 1.8.5, Dell G3 computer.

Javascript method to determine data type

1. typeof

typeof is an operator , followed by a unary expression on the right side, and returns the data type of this expression.

The returned result is expressed in the form of a string (all lowercase letters) of this type, including the following 7 types: string, number, boolean, symbol, undefined, object, function, etc.

typeof 'a'; // string 有效
typeof 1; // number 有效
typeof true; //boolean 有效
typeof Symbol(); // symbol 有效
typeof undefined; //undefined 有效
typeof new Function(); // function 有效
typeof null; //object 无效
typeof [1] ; //object 无效
typeof new RegExp(); //object 无效
typeof new Date(); //object 无效
Copy after login

Summary:

  • For basic types, except null, the correct result can be returned.
  • For reference types, except function, the object type is always returned.
  • For null , return object type.
  • For function return function type.

Among them, null has its own data type Null, and arrays, dates, and regular expressions in reference types also have their own specific types, and typeof only returns the data in the processing of these types. The Object type at the top of its prototype chain.

2. instanceof

instanceof detects the prototype, the expression is: A instanceof B, if A is B instance, returns true, otherwise returns false.

[] instanceof Array; // true
new Date() instanceof Date;// true
 
function Person(){};
new Person() instanceof Person;//true
 
[] instanceof Object; // true
new Date() instanceof Object;// true
new Person instanceof Object;// true
Copy after login

Although instanceof can determine that [ ] is an instance of Array, it thinks that [ ] is also an instance of Object. Why?

It can be judged from instanceof that [ ].__proto__ points to Array.prototype, and Array.prototype.__proto__ points to Object.prototype. Finally, Object.prototype.__proto__ points to null, marking the end of the prototype chain. Therefore, [ ], Array, and Object form a prototype chain internally, as shown in the following figure:

As can be seen from the prototype chain, The __proto__ of [] points directly to Array.prototype and indirectly points to Object.prototype, so according to the judgment rule of instanceof, [] is an instance of Object. By analogy, similar new Date() and new Person() will also form a corresponding prototype chain.

Therefore, instanceof can only be used to determine whether two objects belong to an instance relationship, but cannot determine which type an object instance belongs to.

To address this problem with arrays, ES5 provides the Array.isArray() method. This method is used to confirm whether an object itself is of Array type, without distinguishing the environment in which the object was created.

if (Array.isArray(value)){
   //对数组执行某些操作
}
Copy after login

 Array.isArray() essentially detects the [[Class]] value of the object.

[[Class]] is an internal attribute of the object, which contains the type information of the object. Its format is [object Xxx], and Xxx is the corresponding specific type. For arrays, the value of [[Class]] is [object Array].

【Related recommendations:

javascript learning tutorial

3, constructor When a function F is defined, the JS engine will add a prototype prototype to F, and then add a constructor attribute to the prototype and let it point to a reference to F. As shown in the figure below:

When executing var f = new F(), F is regarded as a constructor, and f is an instance object of F. At this time, the prototype of F The constructor of is passed to f, so f.constructor == F

It can be seen that F refers to itself using the constructor on the prototype object. When F is created as a constructor When an object is created, the constructor on the prototype is inherited to the newly created object. From the perspective of the prototype chain, the constructor F is the type of the new object. The meaning of this is to allow new objects to have traceable data types after they are born.

Similarly, the built-in objects in JavaScript do this when they are built internally, as shown in the figure below.

Summarize:

  1. null 和 undefined 是无效的对象,因此是不会有 constructor 存在的,这两种类型的数据需要通过其他方式来判断。

  2. 函数的 constructor 是不稳定的,这个主要体现在自定义对象上,当开发者重写 prototype 后,原有的 constructor 引用会丢失,constructor 会默认为 Object。

4、toString

  toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。

  对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

  语法:Object.prototype.toString.call(value);

Object.prototype.toString.call('') ;   // [object String]
Object.prototype.toString.call(1) ;    // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]
Object.prototype.toString.call(document) ; // [object HTMLDocument]
Object.prototype.toString.call(window) ; //[object global] window 是全局对象 global 的引用
Copy after login

更多编程相关知识,请访问:编程视频!!

The above is the detailed content of How to determine data type in javascript. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1663
14
PHP Tutorial
1263
29
C# Tutorial
1236
24
What data type should be used for gender field in MySQL database? What data type should be used for gender field in MySQL database? Mar 14, 2024 pm 01:21 PM

In a MySQL database, gender fields can usually be stored using the ENUM type. ENUM is an enumeration type that allows us to select one as the value of a field from a set of predefined values. ENUM is a good choice when representing a fixed and limited option like gender. Let's look at a specific code example: Suppose we have a table called "users" that contains user information, including gender. Now we want to create a field for gender, we can design the table structure like this: CRE

What is the best data type for gender fields in MySQL? What is the best data type for gender fields in MySQL? Mar 15, 2024 am 10:24 AM

In MySQL, the most suitable data type for gender fields is the ENUM enumeration type. The ENUM enumeration type is a data type that allows the definition of a set of possible values. The gender field is suitable for using the ENUM type because gender usually only has two values, namely male and female. Next, I will use specific code examples to show how to create a gender field in MySQL and use the ENUM enumeration type to store gender information. The following are the steps: First, create a table named users in MySQL, including

Mind map of Python syntax: in-depth understanding of code structure Mind map of Python syntax: in-depth understanding of code structure Feb 21, 2024 am 09:00 AM

Python is widely used in a wide range of fields with its simple and easy-to-read syntax. It is crucial to master the basic structure of Python syntax, both to improve programming efficiency and to gain a deep understanding of how the code works. To this end, this article provides a comprehensive mind map detailing various aspects of Python syntax. Variables and Data Types Variables are containers used to store data in Python. The mind map shows common Python data types, including integers, floating point numbers, strings, Boolean values, and lists. Each data type has its own characteristics and operation methods. Operators Operators are used to perform various operations on data types. The mind map covers the different operator types in Python, such as arithmetic operators, ratio

Detailed explanation of how to use Boolean type in MySQL Detailed explanation of how to use Boolean type in MySQL Mar 15, 2024 am 11:45 AM

Detailed explanation of how to use Boolean types in MySQL MySQL is a commonly used relational database management system. In practical applications, it is often necessary to use Boolean types to represent logical true and false values. There are two representation methods of Boolean type in MySQL: TINYINT(1) and BOOL. This article will introduce in detail the use of Boolean types in MySQL, including the definition, assignment, query and modification of Boolean types, and explain it with specific code examples. 1. The Boolean type is defined in MySQL and can be

What is the best data type choice for gender field in MySQL? What is the best data type choice for gender field in MySQL? Mar 14, 2024 pm 01:24 PM

When designing database tables, choosing the appropriate data type is very important for performance optimization and data storage efficiency. In the MySQL database, there is really no so-called best choice for the data type to store the gender field, because the gender field generally only has two values: male or female. But for efficiency and space saving, we can choose a suitable data type to store the gender field. In MySQL, the most commonly used data type to store gender fields is the enumeration type. An enumeration type is a data type that can limit the value of a field to a limited set.

Revealing the classification of basic data types in mainstream programming languages Revealing the classification of basic data types in mainstream programming languages Feb 18, 2024 pm 10:34 PM

Title: Basic Data Types Revealed: Understand the Classifications in Mainstream Programming Languages ​​Text: In various programming languages, data types are a very important concept, which defines the different types of data that can be used in programs. For programmers, understanding the basic data types in mainstream programming languages ​​is the first step in building a solid programming foundation. Currently, most major programming languages ​​support some basic data types, which may vary between languages, but the main concepts are similar. These basic data types are usually divided into several categories, including integers

Introduction to basic syntax and data types of C language Introduction to basic syntax and data types of C language Mar 18, 2024 pm 04:03 PM

C language is a widely used computer programming language that is efficient, flexible and powerful. To be proficient in programming in C language, you first need to understand its basic syntax and data types. This article will introduce the basic syntax and data types of C language and give examples. 1. Basic syntax 1.1 Comments In C language, comments can be used to explain the code to facilitate understanding and maintenance. Comments can be divided into single-line comments and multi-line comments. //This is a single-line comment/*This is a multi-line comment*/1.2 Keyword C language

What are the basic knowledge necessary for learning Python? What are the basic knowledge necessary for learning Python? Jan 13, 2024 pm 01:37 PM

What basic knowledge do you need to know before learning Python? With the continuous development of technologies such as artificial intelligence, big data and cloud computing, programming has become an increasingly important skill in modern society. As a simple, easy-to-learn and powerful programming language, Python is increasingly favored by programmers and beginners. If you also plan to learn Python, there are some basic knowledge that you must master before starting. Understand the basic concepts of programming. Before starting to learn any programming language, you first need to understand some basic concepts.

See all articles