您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

JavaScript数据类型判断方法综述 《源码交易平台》

  • 时间:2022-07-15 00:42 编辑: 来源: 阅读:297
  • 扫一扫,手机访问
摘要:JavaScript数据类型判断方法综述 《源码交易平台》
参考:https://www.cnblogs.com/onepixel/p/5126046.html1.typeOf这种方法在开发中经常用来判断数据类型。 返回的数据类型包括以下七种:数字、布尔、符号、字符串、对象、未定义和函数。 我们知道JavaScript有六种基本数据类型:字符串、数字、布尔、符号、未定义和空。 引用类型有对象、数组、日期、正则表达式、函数、错误。 所以可以看出,对于基本类型,除了null,其他类型的判断都可以返回想要的结果。 但是null有自己的类型,typeof返回的结果是object。 console . log(null类型)//引用类型的对象 方法返回除函数的函数类型之外的对象。 引用类型中的数组、日期、正则等也有自己特定的类型,但typeof的求解只返回其原型链顶端的对象类型。 console . log(type of new function())//function console . log(type of new error())//object console . log(type of new regexp())//object 2 . constructor属性我们知道构造函数的prototype对象中有一个constructor属性,指的是构造函数本身。 这个属性也可以用于类型判断。 当我们访问一个对象实例的构造函数属性时,js会查找原型链。 也就是会找到实例的_proto_ property,通过这个属性找到对象原型。 对象原型的构造函数属性指向实例的构造函数。 下面是一个函数Person(){ this . name = ' Xiaoming ' } const Person = new Person()console . log(Person . prototype)console . log(Person)console . log(Person)我们将原型化,构造函数和对象实例分别打印出来。查看constructor.jpg,可以发现对象实例的_proto_指向对象原型,原型的构造函数又指向构造函数。 使用此属性确定下面的类型。 console . log(person . constructor = = person)//true//more const arr =[1,2]console . log(arr . constructor = = array)//true console . log(new error()。constructor = = error)//true注意:null和undefined是无效对象,它们没有constructor属性。 3.Object.prototype.toString这个方法是判断类型最准确的方法。 使用Object的prototype方法(Object.prototype.toString),调用此方法,默认返回当前对象的[[Class]]。 这是[object xxx]形式的内部属性,其中xxx是对象的类型。 对于Object对象,直接调用toString()可以返回[object Object] 对于其他对象,需要调用/应用。 这里应该注意,尽管所有对象的原型链最终都指向Object 调用toString()方法是合理的,但实际上大多数对象都实现了自己的toString()方法。 根据原型链的搜索规则 当对象调用toString时,它将首先访问自己实现的方法。 因此,有必要使用上述方法在对象原型上强制使用toString()方法。 object . prototype . tostring . call(' str '),//[object String]object . prototype . tostring . call(12),//[object Number]object . prototype . tostring . call([1,2]),//[object Array]object . prototype . tostring . call(false),//[object Boolean]object . prototype . tostring . call(Undefined),/[object Undefined]object . prototype . tostring . call(Null),/[object Null]object Null]prototype . tostring . call( 这种方法的准则是:沿原型链检查,确定B是否能在a的原型链上。 下面用例子来说明:constarr = [1,2] console.log(数组的arr实例)//trueconsole.log(对象的arr实例)//truearray,objectd都在数组对象的原型链上,所以都返回true,这反映了一个问题,这个方法只能判断它们是不是实例和构造函数的关系,而不能判断它们的具体类型。 我们知道这个方法的实现原理是判断B是否可以在A的原型链中,所以我们可以自己实现一个instanceof方法。 const myInstanceof = (left,right)= & gt;{//如果(typeof left!= = ' object ' & amp& amp左边的类型!== 'function'||left === null)返回falseLetproto = left。_ _ proto _ _//获取左侧对象的原型let right proto = right.prototype//Get右侧构造函数的原型//Find while(leftProto)在原型链上。{ if(leftProto === rightProto)返回true leftProto = leftProto。_ _ proto _ _ } return false } const arr =[1,2]const foo =()= & gt;{ console . log(' xiaom ')} console . log(myInstanceof(arr,Array))//true console . log(myInstanceof(arr,Object)) // true console . log(myInstanceof(foo,Array))//false console . log(myInstanceof(foo,Function))//true console . log(myInstanceof(foo,Object))//true


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部