<!doctype html>
<html>
<head>
<title>标题</title>
<meta charset="utf-8">
<script>
//判断一个对象是否是数组类型
//有几种办法:
var obj1=[];
var obj2={};
var obj3={};
obj3.__proto__=[];
//typeof(x) 只能区分原始类型,对象和函数——无法区分数组和普通对象
//console.log(
//typeof(obj1),typeof(obj2)
//);
/*1.用原型对象判断:
console.log(
Array.prototype
.isPrototypeOf(obj1),
Array.prototype
.isPrototypeOf(obj2),
Array.prototype
.isPrototypeOf(obj3)
);
*/
/*2.用构造函数判断:
console.log(
obj1 instanceof Array,
obj2 instanceof Array,
obj3 instanceof Array
)
*/
/*3.用内部class属性判断:
//每个对象内部都有一个class属性
//class属性记录了创建对象时使用的类型名。
//var obj=new Array();
//obj(class:Array)
//var obj=new Object();
//obj(class:Object)
//var obj=new Date();
//obj(class:Date)
//只有Object.prototype.toString()才能输出class属性值
//实现:obj1.toString();
console.log(
Object.prototype.toString.call(obj1)
=="[object Array]",
Object.prototype.toString.call(obj2)
=="[object Array]",
Object.prototype.toString.call(obj3)
=="[object Array]"
);
*/
/*4. Array.isArray(x) ES5*/
//如果?没有isArray
//就在?添加isArray,一个参数obj
return Object.prototype
.toString
.call(obj1)
=="[object Array]";
document.write(
Array.isArray(obj1),
Array.isArray(obj2),
Array.isArray(obj3)
);//true false false
</script>
</head>
<body>
</body>
</html>