首先,我们要明确constructor 属性返回所有 JavaScript 变量的构造函数
"我是字符串".constructor // 返回函数 String() { [native code] }
(3.14).constructor // 返回函数 Number() { [native code] }
false.constructor // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor // 返回函数 Array() { [native code] }
{name:'John', age:34}.constructor // 返回函数 Object() { [native code] }
new Date().constructor // 返回函数 Date() { [native code] }
function () {}.constructor // 返回函数 Function(){ [native code] }
以var fruits = ["Banana", "Orange", "Apple", "Mango"];此数组为例,用constructor属性判断是否为数组
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = isArray(fruits)
;
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") != -1;
}
</script>
上文中myArray.constructor返回函数 Array() { [native code] },因此需要使用toString()将返回的函数转换为字符串,最后使用indexOf("Array"),在获得的字符串中查找是否包含 Array ,如果可以查找到,说明是数组。
此处我们要知道,indexOf() = -1时,说明没有查找到要查询的字符串