没有合适的资源?快使用搜索试试~ 我知道了~
typeof、instanceof、constructor 的联系、区别、应用场景(js 类型判断)
0 下载量 187 浏览量
2021-01-08
13:43:42
上传
评论
收藏 96KB PDF 举报
温馨提示
试读
2页
联系 这三者都可以用来判断一个对象的类型 let now = new Date() now instanceof Date // 输出: true now.constructor == Date // 输出: true typeof 'hello' // 输出: string typeof('hello') // 高版本的 js 支持这种写法。输出: string 看起来是这样的: typeof 返回一个对象的类型的名字,即返回一个字符串 instanceof 用来判断左边的值是否属于右边的类型,返回布尔值 true 或 false(严谨地说是:“左值是否为右值的实例”) construct
资源推荐
资源详情
资源评论
typeof、、instanceof、、constructor 的联系、区别、应用场景的联系、区别、应用场景
((js 类型判断)类型判断)
联系联系
这三者都可以用来判断一个对象的类型
let now = new Date()
now instanceof Date // 输出: true
now.constructor == Date // 输出: true
typeof 'hello' // 输出: string
typeof('hello') // 高版本的 js 支持这种写法。输出: string
看起来是这样的:
typeof 返回一个对象的类型的名字,即返回一个字符串返回一个字符串
instanceof 用来判断左边的值是否属于右边的类型,返回布尔值 true 或 false(严谨地说是:“左值是否为右值的实例”)
constructor 则比较单纯,返回当前对象的构造方法
这看起来很是理所当然,但是下面的这几行代码:
let now = new Date()
async function fn() {}
typeof(now) == 'date' // 输出: ?
'hello' instanceof String // 输出: ?
fn.constructor == Function // 输出: ?
没错,这些输出全是 false
如果你已经知道这三个输出都是 false,则本篇笔记对你就没有任何帮助了
typeof
写法写法
首先对 typeof 的写法做一个建议:一种是函数写法函数写法 typeof('hello'),另一种是操作符写法操作符写法typeof 'hello'。我建议能用函数写法就用函数写能用函数写法就用函数写
法法,下面这行代码读起来往往会使人不自信:
typeof 'hello' == 'string'
是“判断'hello'的类型是否为'string'?“ (即(typeof 'hello') == 'string' )
还是“获取'hello' == 'string'的类型的名字是什么?”(即typeof ('hello' == 'string'))
当然,如果你对这些优先级烂熟于心,一目了然,似乎就没什么影响。但是如果 typeof后面拖了一个很长的表达式呢?如果跟你合
作的同事对此并不熟悉呢?
用法用法
typeof 返回当前对象的类型的名字,没错。
但是let a = new Date() 中的 a不仅是一个 Date,同时也是一个 Object(js 中万物皆对象,而 Object 是所有对象的共同的父类 )。
另外,typeof 'hello'返回'string'('hello'的确是字符串);
而typeof new String('hello')则返回'object'(new String('hello')也的确是一个Object啊)。
而 mdn 对 typeof的返回值有一个对照表,如下图:
资源评论
weixin_38635682
- 粉丝: 0
- 资源: 968
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功