如何判断一个变量是不是对象?面试回答时千万别掉进坑里。

75 阅读1分钟

在面试过程中,经常有面试官提问“JavaScript 中如何判断一个变量是不是对象?”,这道题考验得就是你的基本功是否扎实,这也是工作中难免会遇到的一个问题。

遇见这样的问题,估计有人马上会说 typeof,这样可就错了。

在 JS 中,我们都知道数据类型分两种:基本和引用类型。同时可以通过 typeof 变量名 的形式得到变量的数据类型。

比如:

这就导致我们没法区分 var a = null; var b = []; var c = {}; 这三个变量的类型是不是一样的。所以我们需要使用 Object.getPrototypeOf() 这个方法。

详细内容参考这里

Object.getPrototypeOf()

这个方法获取参数对象的原型,如果原型上没有继承的属性了,则结果是 null。

比如:

通过以上分析,我们就知道如果来区分是不是对象了。

上面代码的意思是,如果变量 obj 的原型和最终得到的对象原型一样,说明是对象,否则就不是对象。接下来我们测试一下。

到此,一个判断变量是不是对象的方法就完成了。