数据类型

JavaScript的基础数据类型有,NaN    string   undefined    Null      Boolen    Symbol    Bigint   这些都是基础数据类型,还有一个引用数据类型,object。

而object又分为 ,array(数组),regexp(正则表达式) ,date(日期), math(数学函数), function(函数)

基础数据类型会存在栈内存中,这种储存在复制的时候会创建一个完全一样的变量

引用数据类型会存在堆内存中。

数据类型的检测

数据类型的检测主要分为三类

1.typeof

typeof方法可以检测基础数据类型,用法如

var a=1

conselo.log(typeof a)//number

或者typeof(a)

注意

在使用typeof的时候是无法判断引用数据类型的,如果知识用于判断基础数据类型的话建议写一个if判断

判断是否为基础数据类型,如果不是就进行下一步验证

2.instanceof

通过instaneof能判断这个函数是否为之前那个构造函数生成的对象,用法如:

  let car = function () { }
        let bwm = new car()
        console.log(bwm instanceof car);//true
        let Car = new String('x7')
        console.log(Car instanceof String);//true
        let str = "ccc"
        console.log(str instanceof String);//false
 
 
如何自己写一个验证方法?
function myInstanceof(left, right) {

  // 这里先用typeof来判断基础数据类型,如果是,直接返回false

  if(typeof left !== 'object' || left === null) return false;

  // getProtypeOf是Object对象自带的API,能够拿到参数的原型对象

  let proto = Object.getPrototypeOf(left);

  while(true) {                  //循环往下寻找,直到找到相同的原型对象

    if(proto === null) return false;

    if(proto === right.prototype) return true;//找到相同原型对象,返回true

    proto = Object.getPrototypeof(proto);

    }

}

// 验证一下自己实现的myInstanceof是否OK

console.log(myInstanceof(new Number(123), Number));    // true

console.log(myInstanceof(123, Number));                // false

instanceof可以准确的判断数据的引用类型,但是无法判断基础数据类型

注意:为了代码的严谨性,不建议单独用typeof或者instanceof,建议两者混合编写

最新文章

  1. 【poj2960】 S-Nim
  2. 21个免费的UI设计工具和资源网站,不管是web,js,android都
  3. yoman安装和使用
  4. Android实现发短信与打电话的功能
  5. javascript 闭包的理解
  6. Swift 制作一个新闻通知中心插件1
  7. sequekize
  8. Qt 地址薄 (二) 添加地址
  9. vue的生命周期的理解
  10. es6 语法 (let 和const)
  11. 【 HDU 2177 】取(2堆)石子游戏 (威佐夫博弈)
  12. Java解决异常之try、catch、finally、throw、throws&log4j记录日志步骤
  13. 省市区三级联动,JS实现
  14. Microsoft Dynamics CRM 常用JS语法(已转成vs2017语法提示)
  15. 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard
  16. 虫趣:BAD POOL CALLER (par1: 0x20)
  17. 面向对象之this关键字
  18. 2019CSUST集训队选拔赛题解(三)
  19. WCF和ASP.NET Web API在应用上的选择(转)
  20. 51nod 1829(函数)

热门文章

  1. C# Attribute特性 泛型<T> 方法的out ref this(扩展方法) Equals与==
  2. [EF] - 全连接
  3. ConcurrentHashMap线程安全吗?
  4. 【linux】系统编程-2-消息队列
  5. Flowable—多实例任务:会签
  6. Java学习日报7.7
  7. Vue - MVVM模式及优点
  8. Media Queries媒体查询
  9. JVM内存设置多大合适?Xmx和Xmn如何设置?
  10. jQuery EasyUI学习一