最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

简单谈谈Javascript中类型的判断_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:44:36
文档

简单谈谈Javascript中类型的判断_javascript技巧

简单谈谈Javascript中类型的判断_javascript技巧:数据类型的判断有这么几种方式 1、一元运算符 typeOf 2、关系运算符 instanceof 3、constructor 属性 4、prototype属性 一、typeof typeof的返回值有以下几种 类型 结构 Undefined undefined Null object
推荐度:
导读简单谈谈Javascript中类型的判断_javascript技巧:数据类型的判断有这么几种方式 1、一元运算符 typeOf 2、关系运算符 instanceof 3、constructor 属性 4、prototype属性 一、typeof typeof的返回值有以下几种 类型 结构 Undefined undefined Null object


数据类型的判断有这么几种方式

1、一元运算符 typeOf

2、关系运算符 instanceof

3、constructor 属性

4、prototype属性

一、typeof

typeof的返回值有以下几种

类型 结构
Undefined "undefined"
Null "object" (见下方)
布尔值 "boolean"
数值 "number"
字符串 "string"
Symbol (ECMAScript 6 新增) "symbol"
宿主对象(JS环境提供的,比如浏览器) Implementation-dependent
函数对象 (implements [[Call]] in ECMA-262 terms) "function"
任何其他对象 "object"

简单粗暴的方法,直接看代码

typeof 只能检查出来以上7几种类型

二、instanceof

instanceof 运算符用于识别正在处理的对象的类型,要求开发者明确地确认对象为某特定类型

1、instanceof 和 constructor 没有关系

2、instanceof又叫关系运算符,可以用来判断某个构造函数的prototype属性是否存在另外一个要检测对象的原型链上

第三次输出为什么会返回false呢 ?原文地址:Javascript中一个关于instanceof的问题

再看一个复杂的用法

为什么,这是为什么呢,要搞明白以下含义

1、语言规范中是如何定义这个运算符的

2、JavaScript 原型继承机制

Object instanceof Object


Function instanceof Function

instanceof 在 Dojo 继承机制中的应用

在 JavaScript 中,是没有多重继承这个概念的,就像 Java 一样。但在 Dojo 中使用 declare 声明类时,是允许继承自多个类的

instanceof和多全局对象(多个frame或多个window之间的交互)

在浏览器中,我们的脚本可能需要在多个窗口之间进行交互。多个窗口意味着多个全局环境,不同的全局环境拥有不同的全局对象,从而拥有不同的内置类型构造函数。这可能会引发一些问题。比如,表达式 [] instanceof window.frames[0].Array 会返回false,因为 Array.prototype !== window.frames[0].Array.prototype,因此你必须使用 Array.isArray(myObj) 或者Object.prototype.toString.call(myObj) === "[object Array]"来判断myObj是否是数组。

注意:undefined和null是检测的Object类型,因为js中没有Undefined和Null的这种全局类型,number, string和boolean无法检测出它的类型

三、constructor

在使用instanceof检测变量类型时,我们是检测不到number, 'string', bool的类型的。因此,我们需要换一种方式来解决这个问题

Object.prototype.constructor返回一个指向创建了该对象原型的函数引用。需要注意的是,该属性的值是那个函数本身,而不是一个包含函数名称的字符串。对于原始值(如1,true 或 "test"),该属性为只读,所有对象都会从它的原型上继承一个 constructor 属性

constructor本来是原型对象上的属性,指向构造函数。但是根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,因此,实例对象也是能使用constructor属性的

不过要注意,constructor属性是可以被修改的,会导致检测出的结果不正确

改变这个对象的constructor属性的值

除了undefined和null,其他类型的变量均能使用constructor判断出类型

四、万能的Object.prototype.toString.call

使用toString()方法来检测对象类型

附上判断函数 Javascript中的数据类型知多少

五、jquery的实现 jquery: "1.8.2",

jquery中提供了一个$.type的接口,看看代码

可以看出来,jquery中就是用Object.prototype.toString.call实现的

文档

简单谈谈Javascript中类型的判断_javascript技巧

简单谈谈Javascript中类型的判断_javascript技巧:数据类型的判断有这么几种方式 1、一元运算符 typeOf 2、关系运算符 instanceof 3、constructor 属性 4、prototype属性 一、typeof typeof的返回值有以下几种 类型 结构 Undefined undefined Null object
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top