关于对象的类型问题

关于对象的类型问题

<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>


<body>

    <script type="text/javascript">

        //补充代码

        Object.defineProperty(Object, 'freezePolyfill', {

            value: function(obj) {

                var i;

                for (i in obj) {

                    if (obj.hasOwnProperty(i)) {

                        if (typeof obj[i] == 'object') {

                            Object.freezePolyfill(obj[i]);

                        }

                        Object.defineProperty(obj, i, {

                            writable: false

                        });

                    }

                }

                Object.seal(obj);

            }

        });

        const xiaoming = {

            age: 3,

            name: 'xm',

            obj: {

                a: 1

            }

        };

        console.log(xiaoming);

        Object.freezePolyfill(xiaoming);

        xiaoming.age = 5;

        xiaoming.obj.a = 66;

        xiaoming.length = 7;

        console.log(xiaoming);

    </script>

</body>


</html>

为什么使用typeof的话必须是'object'换成Object就报错,而使用instanceof的话就必须是Object换成'object'就会报错?不都是对象吗怎么使用不同的方式获取类型结果还不一样了呢?规定就是这样typeof的结果是'object',instanceof的结果是Object吗?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,首先,我们回顾一下js的数据类型:

(1)6种基本类型:undefined、null、boolean、string、number  以及 ES6新增的 symbol

(2)1种引用类型:object

typeof主要用来检测基本数据类型,返回值是一个字符串,一般只能返回如下几个结果:

"number""string"、"boolean"、"object"、"function" 和 "undefined"。

简单来说,使用 typeof 运算符时,无论引用的是什么类型的对象,它都返回 “object”。instanceof主要用来检测引用类型。所以typeof需要使用'object',而instanceof需要使用Object。

祝学习愉快!

  • Aurora_Meteor 提问者 #1
    老师您最后是不是写错了?‘instanceof需要使用object’?不是使用Object? 我好像明白了,instanceof后面必须是一个对象类型的东西是吧,可以是对象最初始的原型Object也可以是Array和Function,但是‘object’是一个字符串它不是对象,所以会报错?
    2020-05-06 18:06:02
  • 卡布琦诺 回复 提问者 Aurora_Meteor #2
    同学你好。非常抱歉,instanceof需要使用Object。按照同学的理解是可以的。祝学习愉快!
    2020-05-06 18:11:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师