摘要:一中数据类型基本数据类型复杂数据类型二判断数据类型下面将对如下数据进行判断它们的类型使用由结果可知可以测试出及,而对于及数组对象,均检测出为,不能进一步判断它们的类型。但是它不能检测非原生构造函数的构造函数名。
一、JS中数据类型
基本数据类型(Undefined、Null、Boolean、Number、String)
复杂数据类型 (Object)
二、判断数据类型下面将对如下数据进行判断它们的类型
var bool = true var num = 1 var str = "abc" var und = undefined var nul = null var arr = [1,2,3] var obj = {name:"haoxl",age:18} var fun = function(){console.log("I am a function")}1.使用typeof
console.log(typeof bool); //boolean console.log(typeof num);//number console.log(typeof str);//string console.log(typeof und);//undefined console.log(typeof nul);//object console.log(typeof arr);//object console.log(typeof obj);//object console.log(typeof fun);//function
由结果可知typeof可以测试出number、string、boolean、undefined及function,而对于null及数组、对象,typeof均检测出为object,不能进一步判断它们的类型。2.使用instanceof
console.log(bool instanceof Boolean);// false console.log(num instanceof Number);// false console.log(str instanceof String);// false console.log(und instanceof Object);// false console.log(arr instanceof Array);// true console.log(nul instanceof Object);// false console.log(obj instanceof Object);// true console.log(fun instanceof Function);// true var bool2 = new Boolean() console.log(bool2 instanceof Boolean);// true var num2 = new Number() console.log(num2 instanceof Number);// true var str2 = new String() console.log(str2 instanceof String);// true function Person(){} var per = new Person() console.log(per instanceof Person);// true function Student(){} Student.prototype = new Person() var haoxl = new Student() console.log(haoxl instanceof Student);// true console.log(haoxl instanceof Person);// true
从结果中看出instanceof不能区别undefined和null,而且对于基本类型如果不是用new声明的则也测试不出来,对于是使用new声明的类型,它还可以检测出多层继承关系。3.使用constructor
undefined和null没有contructor属性
console.log(bool.constructor === Boolean);// true console.log(num.constructor === Number);// true console.log(str.constructor === String);// true console.log(arr.constructor === Array);// true console.log(obj.constructor === Object);// true console.log(fun.constructor === Function);// true console.log(haoxl.constructor === Student);// false console.log(haoxl.constructor === Person);// true
constructor不能判断undefined和null,并且使用它是不安全的,因为contructor的指向是可以改变的4.使用Object.prototype.toString.call
console.log(Object.prototype.toString.call(bool));//[object Boolean] console.log(Object.prototype.toString.call(num));//[object Number] console.log(Object.prototype.toString.call(str));//[object String] console.log(Object.prototype.toString.call(und));//[object Undefined] console.log(Object.prototype.toString.call(nul));//[object Null] console.log(Object.prototype.toString.call(arr));//[object Array] console.log(Object.prototype.toString.call(obj));//[object Object] console.log(Object.prototype.toString.call(fun));//[object Function] function Person(){} function Student(){} Student.prototype = new Person() var haoxl = new Student() console.log(Object.prototype.toString.call(haoxl));//[object Object]
原理(摘自高级程序设计3):在任何值上调用 Object 原生的 toString() 方法,都会返回一个 [object NativeConstructorName] 格式的字符串。每个类在内部都有一个 [[Class]] 属性,这个属性中就指定了上述字符串中的构造函数名。5.使用jquery中的$.type
但是它不能检测非原生构造函数的构造函数名。
console.log($.type(bool));//boolean console.log($.type(num));//number console.log($.type(str));//string console.log($.type(und));//undefined console.log($.type(nul));//null console.log($.type(arr));//array console.log($.type(obj));//object console.log($.type(fun));//function function Person(){} function Student(){} Student.prototype = new Person() var haoxl = new Student() console.log($.type(haoxl));//object
$.type()内部原理就是用的Object.prototype.toString.call()
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/95374.html
摘要:最常见的判断方法它的官方解释操作符返回一个字符串,表示未经计算的操作数的类型。另外,是判断对象是否属于某一类型,而不是获取的对象的类型。多个窗口意味着多个全局环境,不同的全局环境拥有不同的全局对象,从而拥有不同的内置类型构造函数。 js中的数据类型 js中只有六种原始数据类型和一个Object: Boolean Null Undefined Number String Symbol ...
摘要:中九个内置对象在规范中定义了六种数据类型其中原始值类型有种,引用类型有种一有包装对象数值型,包括整形和浮点型其中都是类型二有包装对象字符串类型,有两种表示方式,双引号单引号。方法可以将任意类型数据转成字符串。 JS中九个内置对象 showImg(https://segmentfault.com/img/bV6iZG?w=481&h=411); 在ECMAScript规范(ES5)中定义...
摘要:基本数据类型在中,基本数据类型有种,即数值字符串布尔值。两个布尔值转为数值进行比较。对于对象和布尔值,调用它们的方法得到对应的字符串值,然后进行字符串相加。减法对于字符串布尔值或者,自动调用,转换结果若为,那么最终结果为。 这篇文章,来聊聊 JS 中的数据类型与变量。这是在学习 JS 时最基础的一类问题,但却很重要。希望我的分享有帮助到你。 文章开头,我先提几个面试中遇到的问题: 比如...
摘要:和这三种基本的数据类型,都有对应的引用包装类型和。应用于引用类型的判断,所以对于这三类基本类型没有什么意义。 JS 中的类型判断 js中的数据类型 基本数据类型 undefined、number、string、boolean 引用数据类型 null、Object、Number、String、Boolean、Function、Array、Date、RegExp、Error、Argumen...
摘要:基本数据类型引用类型判断数据类型的方法判断中的数据类型有一下几种方法接下来主要比较一下这几种方法的异同。通常情况下用判断就可以了,遇到预知类型的情况可以选用或方法实在没辙就使用方法。 基本数据类型:String、Number、Boolean、Symbol、undefined、Null引用类型:Object Array Function 判断数据类型的方法: 判断js中的数据类型有一...
阅读 2570·2021-11-22 09:34
阅读 931·2021-11-19 11:34
阅读 2800·2021-10-14 09:42
阅读 1471·2021-09-22 15:27
阅读 2385·2021-09-07 09:59
阅读 1731·2021-08-27 13:13
阅读 3431·2019-08-30 11:21
阅读 770·2019-08-29 18:35