JavaScript--对象-检查一个对象是否是数组
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
//鄙视题: 判断一个对象是否是数组,有几种办法:
var obj1={};//Object
var obj2=[1,2,3];//Array
var obj3=function(){};//Function
var obj4={}; obj4.__proto__=[];
//obj4认[]当爹
/*否定: typeof 无法区分数组和对象
console.log(typeof obj1);//object
console.log(typeof obj2);//object
console.log(typeof obj3);//function
*/
//1. isPrototypeOf 不但检查直接父对象,而且检查整个原型链
console.log(Array.prototype.isPrototypeOf(obj1));
console.log(Array.prototype.isPrototypeOf(obj2));
console.log(Array.prototype.isPrototypeOf(obj3));
console.log(Array.prototype.isPrototypeOf(obj4)); //2. constructor 也可检查整个原型链
console.log(obj1.constructor==Array);
console.log(obj2.constructor==Array);
console.log(obj3.constructor==Array);
console.log(obj4.constructor==Array); //3. instanceof 也可检查整个原型链
//判断一个对象是否是指定构造函数的实例
console.log(obj1 instanceof Array);
console.log(obj2 instanceof Array);
console.log(obj3 instanceof Array);
console.log(obj4 instanceof Array); /*4. 每个对象内部都有一个属性: class
记录了创建对象时使用的类型名
如何访问对象内部的class:
只能调用原生的toString方法
Object.prototype.toString();
"[object Object]"
对象 class
强行调用原生toString:
原生toString.call(替代this的对象)
call做2件事: 1. 执行函数;2. 替换this!
Object.prototype.toString()
this->Object.prototype
Object.prototype.toString.call(obj1)
this->obj1
->在执行时,相当于obj1.toString()*/ console.log(
Object.prototype.toString.call(obj1)
=="[object Array]");//原生的
console.log(
Object.prototype.toString.call(obj2)
=="[object Array]");
console.log(
Object.prototype.toString.call(obj3)
=="[object Array]");
console.log(
Object.prototype.toString.call(obj4)
=="[object Array]"); /*5. ES5: isArray*/
//如果浏览器不支持isArray方法
//就在?添加isArray方法
//参数: obj要检查的对象
//函数体:
//1. 强行调用原生toString方法输出obj的class属性//2. 如果返回的结果是"[object Array]"才返回true
//否则返回false document.write(Array.isArray(obj1)+"<br>");
document.write(Array.isArray(obj2)+"<br>");
document.write(Array.isArray(obj3)+"<br>");
document.write(Array.isArray(obj4)+"<br>");
</script>
</head>
<body> </body>
</html>
JavaScript--对象-检查一个对象是否是数组的更多相关文章
- 《JavaScript 闯关记》之数组
数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引. JavaScript 数组是无类型的,数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型 ...
- 简述JavaScript对象、数组对象与类数组对象
问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...
- JavaScript学习总结(二)数组和对象部分
pt学习总结(二)数组和对象部分 2016-09-16 分类:WEB开发.编程开发.首页精华暂无人评论 来源:trigkit4 分享到:更多1 对象部分 Object类型 Object ...
- [Effective JavaScript 笔记]第51条:在类数组对象上复用通用的数组方法
前面有几条都讲过关于Array.prototype的标准方法.这些标准方法被设计成其他对象可复用的方法,即使这些对象并没有继承Array. arguments对象 在22条中提到的函数argument ...
- 让操作javascript对象数组像.net lamda表达式一样
让操作javascript对象数组像.net lamda表达式一样 随着web应用程序的富客户端化.ajax的广泛使用及复杂的前端业务逻辑.对js对象数组.json数组的各种操作越来越多.越来越复杂. ...
- 第一百零三节,JavaScript对象和数组
JavaScript对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中 ...
- 浅谈JavaScript和DOM中的类数组对象
JavaScript是一门弱类型语言,它的数据类型分为两大类:简单数据类型(5种:Undefined.Null.Boolean.Number.String)和复杂数据类型(1种:Object).Obj ...
- JavaScript对象之关联数组
Tip: 内容摘抄自<JavaScript权威指南>,看过该书的同学可以忽略本文. 存取一个对象的属性的方式: obj.attr; obj["attr"]; 两者最重要 ...
- JavaScript 对象与数组参考大全
http://www.cnblogs.com/meil/archive/2006/06/28/437527.html本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作 ...
随机推荐
- Java this 心得
用类名定义一个变量的时候,定义的应该只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法,那们类里面是否也应该有一个引用来访问自己的属性和方法纳?呵呵,JAVA提供了一个很好的东西,就是 t ...
- 修改2张表不同SESSION相互持有记录引发的死锁
死锁产生的原因:如果有两个会话,每个会话都持有另一个会话想要的资源,此时就会发生死锁. 2张表不同SESSION持有不同记录 SQL> create table t1(id int); Tabl ...
- 【POJ】3283 Card Hands
字典树. #include <iostream> #include <cstdio> #include <cstring> #include <string& ...
- Android数据加密解密
最近项目在维护过程中,估计这一周都会没有什么事情做了.于是开始打量自己做完的这个项目,项目在展示方面乏善可陈,然后仔细的想了想,这个项目的亮点无非就在数据加密和解密这一块了.因为是银行的项目,所以对数 ...
- 生成树的计数(基尔霍夫矩阵):BZOJ 1002 [FJOI2007]轮状病毒
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3928 Solved: 2154[Submit][Statu ...
- HDU 5875 Function 【倍增】 (2016 ACM/ICPC Asia Regional Dalian Online)
Function Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- IOS的 testflight测试设置
管理员邀请参与者 1.登录开发者账号https://developer.apple.com/account 2.进入后,点击ituns connect 3.点击进入用户和职能 4.在用户栏点击添加按钮 ...
- H-Index ——Leetcode
Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...
- 批量更新数据小心SQL触发器的陷阱
批量更新数据时候,Inserted和Deleted临时表也是批量的,但触发器只会调用执行一次!两个概念千万不要弄混淆! 错误的理解:例如:创建在A表上创建了一个Update触发器,里面写的是Updat ...
- HDU4530:小Q系列故事——大笨钟
Problem Description 饱尝情感苦恼的小Q本打算隐居一段时间,但仅仅在3月25号一天没有出现,就有很多朋友想念他,所以,他今天决定再出来一次,正式和大家做个告别. 小Q近来睡眠情况很差 ...