源码中看到val.toString === Object.prototype.toString

在啃vue源码过程中看到:

1const _toString = Object.prototype.toString 2 3/** 4 * Convert a value to a string that is actually rendered. 5 * 将值转换为实际呈现的字符串 6 */ 7export function toString (val: any): string { 8 return val == null 9 ? '' 10 : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString) 11 ? JSON.stringify(val, null, 2) 12 : String(val) 13}

我们捋一下。 val是空值直接返回空字符串'',否则进行判断 val是数组或者val是对象obj(isPlainObject用来判断是否是对象),并且一个条件(待定)。满足则返回带2个空白缩进的json字符串,否则直接转换为string

这个条件写法是val.toString === Object.prototype.toString,这里用的全等,因此可以先猜想是为了判断val是Object。我的印象里val.toString不是一直等于Object.prototype.toString吗

1''.toString === Object.prototype.toString // false 2 3[].toString === Object.prototype.toString // false 4 5new Object().toString === Object.prototype.toString // true 6 7let functionC = function(){ 8 return '' 9} 10functionC.toString === Object.prototype.toString //false

image.png

我们可以看到不同类型的.toString都是不同的类型,但他们都是返回 ƒ toString() { [native code] }

因此我做了尝试

image.png

再去mdn搜索下

image.png 也就是说不同类型的原型都创建了toString方法 因此我们可以验证我们的猜想,val.toString === Object.prototype.toString为了判断val是Object

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )