博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈JS中的typeof和instanceof的区别
阅读量:6487 次
发布时间:2019-06-24

本文共 1272 字,大约阅读时间需要 4 分钟。

JS中的typeof和instanceof常用来判断一个变量是否为空,或者是什么类型。

typeof

typeof运算符返回一个用来表示表达式的数据类型的字符串。

typeof一般返回以下几个字符串:

"number", "string","boolean","object","function","undefined"

对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性。

 

我们可以使用typeof来判断一个变量是否存在,if(typeof a!= "undefined"), 而不要去使用if(a),因为a不存在(未声明)会报错。

 

instanceof

instanceof用来检测某个对象是不是另一个对象的实例。

官方的话:该运算发用来测试一个对象在其原型链中是否存在一个构造函数prototype属性

var a = new Array();console.log(a instanceof Array);    // 会返回 trueconsole.log(a instanceof Object);    // 也会返回 true 因为Array是object 的子类
function Foo(){}Foo.prototype = new Aoo();  // 原型继承var foo = new Foo();console.log(foo instanceof Foo)  //trueconsole.log(foo instanceof Aoo)  //trueinstanceof不仅可以判断一层继承关系,也可以判断多层继承关系
var a = new Array();if(a instanceof Object)              // 返回trueif(window instanceof Object)    // 返回falsetypeof(window)  //会得到object需要注意的是,如果表达式 obj instanceof Foo 返回true,则并不意味着该表达式会永远返回ture,因为Foo.prototype属性的值有可能会改变,改变之后的值很有可能不存在于obj的原型链上,这时原表达式的值就会成为false
var a = new Array();if(a instanceof Object)              // 返回trueif(window instanceof Object)    // 返回falsetypeof(window)  //会得到object需要注意的是,如果表达式 obj instanceof Foo 返回true,则并不意味着该表达式会永远返回ture,因为Foo.prototype属性的值有可能会改变,改变之后的值很有可能不存在于obj的原型链上,这时原表达式的值就会成为false

 

转载于:https://www.cnblogs.com/mikeCao/p/9271346.html

你可能感兴趣的文章
redis.conf
查看>>
SCALA中的函数式编程
查看>>
将List<int> 转换为用逗号连接为字符串
查看>>
C/C++中extern关键字详解
查看>>
Eclipse 最有用的快捷键
查看>>
K & DN 的前世今生(微软开源命名变革)
查看>>
--@angularJS--angular与BootStrap3的应用
查看>>
Flask服务入门案例
查看>>
ReadWriteLock与ReentrantReadWriteLock
查看>>
Atitit.软件命名空间 包的命名统计 及命名表(2000个名称) 方案java package...
查看>>
新手指导:教你如何查看识别hadoop是32位还是64位
查看>>
Codeforces Round #180 (Div. 2) D. Fish Weight 贪心
查看>>
Gradle sourceCompatibility has no effect to subprojects(转)
查看>>
百度指数分析
查看>>
使用Mkdocs构建你的项目文档
查看>>
三分钟读懂TT猫分布式、微服务和集群之路
查看>>
fn project 运行时配置选项
查看>>
你的leader还在考核你的千行代码Bug率吗?
查看>>
多块盘制作成一个lvm
查看>>
InnoDB多版本
查看>>