typeof 和 instanceof apply与call简单用法以及判断数组的坑
1 typeof 和 instanceof
var array = [];
平时如果判断一个对象是否为数组,可能你会用 typeof array,但是输出为“object”。
typeof 一般只能返回如下几个结果:
number,boolean,string,function,object,undefined。
对于 Array,Null 等特殊对象使用 typeof 一律返回 object。
所以你因该 :
array instanceof Array 输出为 true;
当然 :
array instanceof Object 输出也为 true;
因为 Array本身就是对象的子集。
这也是为什么转化类数组为数组的方法为:
Array.prototype.slice.call(arguments,0);
当然:
[].slice.call(arguments,0);也是可以的。
2 call 和 apply
上面既提到call的用法,那么我就顺便说一下call和apply的用法。
apply:
Function.apply(obj,args)方法能接收两个参数,
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments, 指的是函数中的参数
实例:
function people(age,sex){
this.age=age;
this.sex=sex;
};
function adult(age,sex){
people.apply(this,arguments)
};
var jack = new adult(18,'man');console.log(jack.age+":"+jack.sex)
输出为 18:man;
其实看到这段代码就知道apply怎么用了吧。
其实apply 说到底就是为了使的一个对象可以使用不属于自己的方法,例如:jack.people(),这样肯定不行的!
网上看到的关于apply一些延伸的方法:
求最大值:var array = [1,2,3];Math.max.apply(null,array); // 3
求最小值:var array = [1,2,3];Math.min.apply(null,array); // 1
合并数组:var array1 = [1,2,3],array2 = [4,5,6];Array.prototype.push.apply(array1,array2);
其实就是利用apply的特性将数组转化为参数列表[param1[,param2[,…[,paramN]]]],去处理这些问题。
前两个方法是因为不接受数组,所以这样处理。
第三个合并数组有很多其他方法,可以不这样用。
call:
Function.call(obj,[param1[,param2[,…[,paramN]]]])
其实这里的参数列表 [param1[,param2[,…[,paramN]]]]= arguments;只是call 必须将参数列出来;
如果运用上面的例子,输出的结果是一样一样的!
如果还有其他延伸的有意思的方法给以发评论告诉我!
typeof 和 instanceof apply与call简单用法以及判断数组的坑的更多相关文章
- apply与call简单用法以及判断数组的坑
1 typeof 和 instanceof var array = [];平时如果判断一个对象是否为数组,可能你会用 typeof array,但是输出为“object”. typeof 一般只能返回 ...
- javascript中typeof和instanceof用法的总结
今天在看相应的javascript书籍时,遇到了typeof和instanceof的问题,一直不太懂,特地查资料总结如下: JavaScript 中 typeof 和 instanceof 常用来判断 ...
- call()与apply()区别typeof和instanceof的区别
摘自 http://www.cnblogs.com/qzsonline/archive/2013/03/05/2944367.html 一.方法的定义 call方法: 语法:call(thisObj, ...
- js中typeof与instanceof用法
今天写JS代码,遇到动态生成多个名称相同的input复选按钮 需要判断其是否是数组,用到了if (typeof(document.MapCheckMgr.checkid)!="undefin ...
- typeof()和instanceof()用法区别
typeof()和instanceof()用法区别: 两者都是用来判断数据类型的 typeof()是能用来判断是不是属于五大类型Boolean,Number,String,Null,Undefined ...
- JS中typeof和instanceof用法区别
typeof和instanceof都可以用来判断变量 1.typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果: number,boolean,string,functi ...
- JS中typeof和instanceof的用法和区别
typeof和instanceof的区别 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的 instanceof的用法 instanceof返回的是一个布尔值 ...
- Android MultiType第三方库的基本使用和案例+DiffUtil的简单用法
1.MultiType简单介绍 1.1.MultiType用于比较复杂的页面. 如下图,今日头条用到了MultiType处理各种复杂的页面. 这种还是比较简单的类型.因为一个页面也就这种类型. ...
- JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
随机推荐
- python 打开文件基础 (笔记)
1.打开文件:建立文件与程序的关联 open(filenname,mode) filenname:文件名(包括路径):mode :打开模式 模式 打开模式 含义 r 只读,文件不存在则报错 w 只写, ...
- Win10远程桌面 出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法
升级至win10 最新版本18362,远程桌面连接Window Server时报错信息如下: 出现身份验证错误,要求的函数不正确,这可能是由于CredSSP加密Oracle修正. 解决方法: 运行 g ...
- Spring切面编程实践【原创】
定义 什么叫Spring面向切面编程(AOP),请自行百度,这边就不做详细介绍了. 场景 有两个对象,字典和工程信息Bean,每次新增或修改对象时,记录新增和修改的时间. 基类定义 package m ...
- MySql日期与时间函数
select DATE_FORMAT(date_sub(current_date(), interval 1 day), '%Y-%m-%d') -- 2018-05-29(昨天) select DA ...
- Loadrunner Vugen参数列表中数据分配方法及更新值的时间9种组合说明及验证
作为刚开始学习Loadrunner的新人,Data Assignment Method以及Update Method在相互组合之后,LR如何进行取值让我很是头疼. 于是花了一个晚上的时间认真学习官方文 ...
- GhostScript应用一例:使用GhostScript强行修改加密PDF
GhostScript官方网站为:http://www.ghostscript.com/ 作为一个英文开源软件,发现国内用的人很少.尤其是在Windows环境下,Acrobat/Adobe/Foxit ...
- java mybatis后台判断表是否存在mysql
<select id="isTableExist" parameterType="string" resultType="int"&g ...
- docker镜像无法下载或者下载缓慢
解决docker镜像无法下载的问题 2015年10月02日 16:01:05 阅读数:20776 克服跨洋网络延迟,使用Docker Hub Mirror加速Docker官方镜像下载 http://c ...
- Maven下Spring + SpringMvc + Hibernate4 配置实例
1. 开发环境 IDEA 2. 在pom.xml中配置引用相关的包. <properties> <junit.version>4.10</junit.version> ...
- 在docker集群下,使用VNC,物理机器重启后VNC失败解决
首先重装咯: sudo apt-get update sudo apt-get install ubuntu-desktop gnome-panel gnome-settings-daemon met ...