今天看到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);