欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Javascript 中数据类型判断 typeof、 instanceof

程序员文章站 2022-06-04 21:46:28
...

1、typeof 运算符只能检测出值的类型

  • number、string、Boolean、undefined、object,
  • 在检测对象类型(null、{ } 、[ ] 、undefined)时,一律返回 object,无法明确区分当前对象所属类型
  • typeof可以判断所有js中的基本数据类型(Null,Undefined,Boolean,String,Number),虽然null使用typeof返回的是object,但是不影响它的基本使用。但是如果想要判断array,null等,它就起不到作用了。
  •     var obj = {
        name: 'zhangxiang'
        };
        function foo() {
            console.log('this is a function');
        }
        var arr = [1,2,3];
        console.log(typeof 1);  // number
        console.log(typeof '1');  //string
        console.log(typeof true);  //boolean
        console.log(typeof null); //object
        console.log(typeof undefined); //undefined
        console.log(typeof obj); //object
        console.log(typeof foo);  //function
        console.log(typeof arr);   //object

    2、instanceof 运算符, a instanceof b , a的类型是b吗?

instanceof运算符用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性
语法:object instanceof constructor
其实它适合于判断自定义的类实例对象,而不是用来判断原生的数据类型。 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
    //    instanceof 运算符
    var a=[];
     console.log(a instanceof Array);   //true
     console.log([] instanceof String);  // false
     console.log([] instanceof Object)  //true
     console.log(null instanceof Object) //false
 
    </script>
</body>
</html>

参考链接:https://blog.csdn.net/weixin_30500473/article/details/97506239

    // a.html
    <script>
      var a = [1,2,3];
    </script>
    //main.html
    <iframe src="a.html"></iframe>
    <script>
      var frame = window.frame[0];
      var a = frame.a;
      console.log(a instanceof Array);  // false
      console.log(a.contructor === Array);  //false
      console.log(a instanceof frame.Array); // true
    </script>

面向对象编程语言中,所有对象都是根据object (基本类衍生出来的),所有的对象都是object类的实例对象。

相关标签: javascript