本文介绍在JavaScript中通过变量constructor属性进行类型检查的方法,并对比了typeof运算符的结果。文章展示了如何将字符串解析为数字、将数组连接为字符串等实际应用,同时指出constructor检查在严格参数类型验证中的优势及其局限性。
JavaScript类型检查代码示例
代码如下:
// 检查我们的数字是否其实是一个字符串
if ( num.constructor == String )
// 如果是,则将它解析成数字
num = parseInt( num );
// 检查我们的字符串是否其实是一个数组
if ( str.constructor == Array )
// 如果是,则用逗号连接该数组,得到一个字符串
str = str.join(',');constructor与typeof类型检查结果对比
表1展示了对不同类型对象分别使用两种方法进行类型检查的结果。表格第一列列出试图确定类型的对象;第二列显示运行typeof Variable(Variable为第一列所示值)的结果,该列所有结果均为字符串;第三列显示对第一列对象运行Variable.constructor的结果,该列所有结果均为对象。
表1. 变量类型检查
———————————————————————————————Variable typeof Variable Variable.constructor
———————————————————————————————
{an:"object"} object Object
["an","array"] object Array
function(){} function Function
"a string" string String
55 number Number
true boolean Boolean
new User() object User
——————————————————————————————————
constructor类型检查的应用场景
使用变量的constructor作为对象类型的引用可能是最简单的类型检查方式。当你需要确定传入函数的参数类型是否精确匹配时,严格的类型检查在此场景下可能大有帮助。