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简单用法以及判断数组的坑的更多相关文章

  1. apply与call简单用法以及判断数组的坑

    1 typeof 和 instanceof var array = [];平时如果判断一个对象是否为数组,可能你会用 typeof array,但是输出为“object”. typeof 一般只能返回 ...

  2. javascript中typeof和instanceof用法的总结

    今天在看相应的javascript书籍时,遇到了typeof和instanceof的问题,一直不太懂,特地查资料总结如下: JavaScript 中 typeof 和 instanceof 常用来判断 ...

  3. call()与apply()区别typeof和instanceof的区别

    摘自 http://www.cnblogs.com/qzsonline/archive/2013/03/05/2944367.html 一.方法的定义 call方法: 语法:call(thisObj, ...

  4. js中typeof与instanceof用法

    今天写JS代码,遇到动态生成多个名称相同的input复选按钮 需要判断其是否是数组,用到了if (typeof(document.MapCheckMgr.checkid)!="undefin ...

  5. typeof()和instanceof()用法区别

    typeof()和instanceof()用法区别: 两者都是用来判断数据类型的 typeof()是能用来判断是不是属于五大类型Boolean,Number,String,Null,Undefined ...

  6. JS中typeof和instanceof用法区别

    typeof和instanceof都可以用来判断变量 1.typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果: number,boolean,string,functi ...

  7. JS中typeof和instanceof的用法和区别

    typeof和instanceof的区别 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的 instanceof的用法 instanceof返回的是一个布尔值 ...

  8. Android MultiType第三方库的基本使用和案例+DiffUtil的简单用法

    1.MultiType简单介绍 1.1.MultiType用于比较复杂的页面. 如下图,今日头条用到了MultiType处理各种复杂的页面.    这种还是比较简单的类型.因为一个页面也就这种类型. ...

  9. JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

随机推荐

  1. pymysql -转自https://www.cnblogs.com/chenhaiming/p/9883349.html#undefined

    PyMysql的几个重要方法 connect函数:连接数据库,根据连接的数据库类型不同,该函数的参数也不相同.connect函数返回Connection对象. cursor方法:获取操作数据库的Cur ...

  2. Django08-批量创建数据

    通过views.py文件中创建 第1种方法循环创建数据, 这种方法不推荐,因为每一次循环都会连接一次数据库,效率较慢 def user_list(request): user_all = models ...

  3. 从数据类型 varchar 转换为 numeric 时出错.

    如果说你的数据库字段是varchar,但是存储的数据是数值,在出报表时需要转成int或numeric时,无论怎么样都报错. 错误信息: 消息 8114,级别 16,状态 5,第 1 行 从数据类型 v ...

  4. react-redux的使用

    在react-redux 框架中,给我提供了两个常用的API来配合Redux框架的使用,其实在我们的实际项目开发中,我们完全可以不用react-redux框架,但是如果使用此框架,就如虎添翼了. 我们 ...

  5. day46 前端基础HTML5+CSS3

    编辑器 pycharm,sublime,hbuild,webstorm,atom 前端概念 广义:用户能看见并且交互的显示页面 狭义:运行在浏览器上的页面 学习的语言 html5 => (h5架 ...

  6. SDL2.0 vs2017环境配置

    到SDL的官网下载VC++的Development Libraries. 新建一个项目,进入属性窗口. VC++目录->包含目录加入include所在路径,库目录加入lib\x86所在路径. 链 ...

  7. LeetCode Smallest Range

    数据范围是3500,3500也就是说n的平方是可以接受的.这里告诉你就是有序的,也就是在提醒你可能会是一个类似于二分的算法,所以的话其实基于这两个认识的话我们就可以利用一个枚举叫二分的算法来解决这道题 ...

  8. XACT_ABORT选项

    XACT_ABORT选项用于指定当SQL语句出现运行时错误时,SQL Server是否自动回滚到当前事务.其语法格式如下所示: SET XACT_ABORT{ON|OFF} 当SET XACT_ABO ...

  9. python 全局变量

    修改全局变量 name = 'jason' def change_name(): global name name = 'Jason'

  10. 微信小程序记账本进度三

    //index.jsvar util = require("../../utils/util.js"); //获取应用实例 var app = getApp(); Page({ d ...