JavaScript-获取对象类型

例如如下的一段代码,我想要得到的类型为 object

let obj = new Object();

如下的代码我想要得到的类型为 Array

let arr = new Array();

如下的代码我想要得到的类型为 Person

let p = new Person();

通过我前面所介绍的内容知道可以利用一个关键字 typeof 来进行获取代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript-获取对象类型</title>
    <script>
        let obj = new Object();
        console.log(typeof obj);

        let arr = new Array();
        console.log(typeof arr);

        function Person() {
            this.name = "BNTang";
            this.age = 34;
            this.say = function () {
                console.log(this.name, this.age);
            }
        }

        let p = new Person();
        console.log(typeof p);
    </script>
</head>
<body>
</body>
</html>

image-20210909192035399

通过如上的运行结果发现全是 object 要想知道为什么其实也很简单,在我们使用构造函数创建对象的时候其实内部会自动的创建一个 object 实例赋值给 this 然后返回 this 所以获取的就都是 object 了。

image-20210909192413682

如果想要运行的结果和我文章开始所说的类型一致的话可以通过 constructor 中的一个 name 来实现改造的代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript-获取对象类型</title>
    <script>
        let obj = new Object();
        console.log(typeof obj);

        let arr = new Array();
        console.log(arr.constructor.name);

        function Person() {
            this.name = "BNTang";
            this.age = 34;
            this.say = function () {
                console.log(this.name, this.age);
            }
        }

        let p = new Person();
        console.log(p.constructor.name);
    </script>
</head>
<body>
</body>
</html>

image-20210909192721880

posted @ 2021-09-09 19:28  BNTang  阅读(512)  评论(0编辑  收藏  举报