从js对象类型的判断,附call与apply方法的区别

 今天看到dwr.engine.js,里面有一段判断data数据类型的方法

typeof返回object的时候,是不是感觉比较无语?
发现一个Object.prototype.toString.call(data);返回的是一个类型'[Object Array]'的字符串,
发到群里与基友分享,
基友回了个instanceof

这就有3种方法判断数据类型了。
其实这3种方法互为补充。
typeof适合基本数据类型和string类型
instanceof适合当typeof无能为力的时候,并要根据不同数据类型做不同的操作时
Object.prototype.toString.call(data)适合直接对类型进行输出的情况,注意,这个方法与data.toString()不是完全相同的,["a","b","c"].toString()就与Object.prototype.toString.call(["a","b","c"])不同

这里用到了.call方法
与之对应的还有一个.apply方法

说到这里,就说一个call与apply方法的区别

function fun(arg1,arg2,arg3)
{
   .....
}
var arg1 = "arg1";
var arg2 = "arg2";
var arg3 = "arg3";
var arg  = [arg1,arg2,arg3];
fun.call(this,arg1,arg2,arg3);
fun.apply(this,arg);

转载于:https://my.oschina.net/wamdy/blog/98443

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值