类型检测汇总!typeof 和 instanceof 和isArray
var arr = [, ];
alert(arr instanceof Array);//true
以上老方法判断是否是数组,存在一个问题,就是它只适用于单执行环境(窗口),如果该窗口有其他框架(比如 iframe)则会出问题
比如:
html: <iframe frameborder="" name="result" id="result"></iframe> script: document.querySelector('#result').src = 'demo5.html'; //下面是deml5界面代码 alert(parent.arr instanceof Array);//false
alert(parent.arr instanceof parent.window.Array);//true 这样才是true
另外 js5 新增判断方法 是 Array.isArray(value) 统一了判断方法
typeof 只适用于检测基本数据类型,引用类型 统一都是object 所以,没什么用处对于检测引用类型时候
//js中一共六种数据类型
//5种基本类型 Undefined Null Boolean String Number
//一种复杂类型 Object //type of 共会返回六种结果
//undrfined-- 如果这个值未定义
//boolean-- 如果这个值是布尔值
//string-- 如果这个值字符串
//number-- 如果这个值是数字
//object-- 如果这个值是对象或者null(null 被看成是一个空对象的引用)
//function-- 如果这个值是函数 var str= 'aa';//typeof---string
var num= ;//typeof---number
var b= true;//typeof---boolean
var u;//typeof---undefined
//以上是基本类型
var func= function(){}//typeof---function
//以上是比较特殊的对象类型--函数类型
var n=null;//typeof---object
var o= new Object();//typeof---object
var arr= [,];//typeof---object
//以上是对象类型 //所以 typeof 只适合检测基本类型 和 函数
# 严格判断方法:Object.prototype.toString.call([]); //"[object Array]"
总结:typeof 用于判断基本类型和function
instanceof 用于单一环境下 对象类型(如果用基本类型调用此方法 始终返回false)
isArray 可以跨环境判断
类型检测汇总!typeof 和 instanceof 和isArray的更多相关文章
- JavaScript类型检测汇总
曾经我以为JavaScript中的类型检测只要使用 typeof 或 instanceof 就可以通通解决.后来我发现我是too young too naive啊!早说过JavaScript是 ...
- js类型判断:typeof与instanceof
typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果: number,boolean,string,function(函数),object(NULL,数组,对象),und ...
- JS 类型检测
typeof 适合函数对象和基本类型的判断 typeof 100instanceof 适合判断对象类型 obj instanceof Object 基于原型链判断操作符,若做操作符不是对象,则会直接返 ...
- JavaScript的三种类型检测typeof , instanceof , toString比较
1.typeof typeof是js的一个操作符,在类型检测中,几乎没有任何用处. typeof 返回一个表达式的数据类型的字符串,返回结果为javascript中的基本数据类型,包括:number. ...
- JS中 typeof,instanceof类型检测方式
在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景: 1.typeof:主要用于检测基本类型. typeof undefined;//=> undefined typeof 'a' ...
- JavaScript 类型判断 —— typeof 以及 instanceof 中的陷阱
JavaScript中基本类型包含Undefined.Null.Boolean.Number.String以及Object引用类型.基本类型可以通过typeof来进行检测,对象类型可以通过instan ...
- JS做类型检测到底有几种方法?看完本文就知道了!
JS有很多数据类型,对于不同数据类型的识别和相互转换也是面试中的一个常考点,本文主要讲的就是类型转换和类型检测. 数据类型 JS中的数据类型主要分为两大类:原始类型(值类型)和引用类型.常见的数据类型 ...
- js中typeof和instanceof
对于typeof和instanceof,我们经常用来检测数据的类型.typeof可以检测Number.Boolean.String.Undefined类型,对于其他类型的数据都返回为object:而i ...
- 谈谈JavaScript类型检测
javascript内置的类型检测机制并非完全可靠.比如typeof操作符,并不能准确的判断数据是哪个类型,比如:数组和对象就不能通过typeof来区分. typeof [] ==="o ...
随机推荐
- 在服务器端使用 Git 创建源代码仓库
下面简单讲述在服务器搭建 Git 仓库的过程. 安装 Git 程序 Git 是分布式的,即程序不区分服务端和客户端,大部分 Linux 发行版的官方源里都有它,比如在 Archlinux 里安装 Gi ...
- Android:通过Intent访问一个网页
Intent(意图)主要是解决Android应用的各项组件之间的通讯. 小实例 package com.example.testopen; import android.app.Activity; i ...
- socket.io 使用
socket.io是一个以实现跨浏览器.跨平台的实时应用为目的的项目.针对不同的浏览器版本或者不同客户端会做自动降级处理,选择合适的实现方式(websocket, long pull..),隐藏实现只 ...
- (组合数学3.1.2.2)POJ 2084 Game of Connections(卡特兰数公示的实现)
package com.njupt.acm; import java.math.BigInteger; import java.util.Scanner; public class POJ_2084 ...
- VS2005工程增加SDK
客户最近发过来一个VS2005的工程,此工程是基于Pocket PC 2003(ARMV4),需要改为我们WINCE6.0系统对应的SDK,下面具体说明如何添加新的SDK. 选择configurati ...
- xp主机用VMware9和10安装Ubuntu12.04后无法进入图像界面
xp主机用VMware9和10安装Ubuntu12.04后无法进入图像界面 备注:虚拟机安装Ubuntu12.04 64位版本 刚开始我用VMware-workstation-full-8.0.3来安 ...
- 解决ImportError: cannot import name HTTPConnection的方法
在写python程序的时候,使用from httplib import HTTPConnection,在run的时候提示ImportError: cannot import name HTTPConn ...
- [POJ 2429] GCD & LCM Inverse
GCD & LCM Inverse Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10621 Accepted: ...
- 以CTE表达式实现MSSQL的字符串分割函数
ALTER FUNCTION [dbo].[Split] (@sep varchar(2), @s varchar(512))RETURNS tableASRETURN ( WITH P ...
- 理解java reference
Java世界泰山北斗级大作<Thinking In Java>切入Java就提出“Everything is Object”.在Java这个充满Object的世界中,reference是一 ...