js 中 instanceof number

http://www.cnblogs.com/xiaoruo/p/4677853.html

 

对Js有一定了解的盆友肯定都知道instanceof 并且还很常用,比如说用[1, 2, 3] instanceof Array 来判断是否是数组。所以我们可能会简单的以为他就是一个用来判断typeof无法判断的复杂数据类型的。但是,有些时候instaneof似乎并不是我们想象的那么简单。比如:

1 123 instanceof Number      
2 new Number(123) instanceof Number     
3 Number(123) instanceof Number

思考一下上面的三个表达式返回什么呢?(在心里默默地思考一下你的答案,会不会是 true false true呢? 哈哈,那你还真就掉坑里了呢~)

 

咦~为什么是这样勒?(没有这种疑问的童鞋我的这篇博客可能满足不了你了~嘻嘻)

事实上,instanceof的使用定义为

The instanceof operator tests whether an object has in its prototype chain the prototype property of a constructor.

意思也就是说instanceof这个运算符是用来测试一个对象的原型链上是否有该原型的构造函数,即instanceof左表达式要是一个对象,右侧表达式要是一个构造函数,并且左侧是右侧实例化出来的对象才会返回true

这样理解之后我们在来看看上面的代码:第一个 首先左侧为Number类型,并不是一个对象,更不是由Number实例化出来的(基本包装类型),所以为false

                                                  第二个 左侧使用Number构造实例化对象 右侧为Number构造 ,所以为true

                                                  第三个 左侧没有使用new所以并不是使用构造函数实例化 而是使用Number这个函数返回了一个数字, 所以为false

 

这样,我们就基本了解了instanceof的用法啦~

 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
JavaScript,`instanceof`和`typeof`是两个常用的操作符,用于检查变量的类型。它们的用法如下: 1. `instanceof`操作符用于检查一个对象是否是某个类的实例。语法如下: ```javascript obj instanceof Class ``` 这里,`obj`是要检查的对象,`Class`是要检查的类。如果`obj`是`Class`的实例或者是其子类的实例,则返回`true`,否则返回`false`。 示例: ```javascript class Person {} const person = new Person(); console.log(person instanceof Person); // true console.log(person instanceof Object); // true,因为所有对象都是Object的实例 ``` 2. `typeof`操作符用于确定一个值的数据类型。语法如下: ```javascript typeof value ``` 这里,`value`是要检查的值。返回值为一个表示数据类型的字符串,可能的取值包括: - `'undefined'`:未定义的变量或属性 - `'boolean'`:布尔值 - `'number'`:数值 - `'string'`:字符串 - `'symbol'`:符号值(ES6新增) - `'function'`:函数 - `'object'`:对象(包括数组、null等) 示例: ```javascript console.log(typeof undefined); // 'undefined' console.log(typeof true); // 'boolean' console.log(typeof 42); // 'number' console.log(typeof 'hello'); // 'string' console.log(typeof Symbol('symbol')); // 'symbol' console.log(typeof function() {}); // 'function' console.log(typeof {}); // 'object' console.log(typeof []); // 'object' console.log(typeof null); // 'object',注意这里的历史遗留问题 ``` 希望以上解释对你有帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值