Javascript中检验字符串、数组、json的方法:
1.isString:
function isString(str){ return str instanceof String || typeof str=='string'; }
js中创建字符串有两种方式:
var str = 'zifuchuan'; var str = new String('zifuchuan');
这两种方式有什么区别呢?我们来看例子:
function isString(str){ return str instanceof String; } var str1 = 'zifuchuan'; var str2 = new String('zifuchuan'); console.log(isString(str1));//结果是false; console.log(isString(str2));//结果是true;
嗯?有看到区别吧。再来看:
function isString(str){ return typeof str == 'string'; } var str1 = 'zifuchuan'; var str2 = new String('zifuchuan'); console.log(isString(str1));//结果是true; console.log(isString(str2));//结果是false;
嗯?精神分裂,看到区别但是合不起来?看:
function isString(str){ return str instanceof String || typeof str == 'string'; } var str1 = 'zifuchuan'; var str2 = new String('zifuchuan'); console.log(isString(str1));//结果是true; console.log(isString(str2));//结果也是true;
2.isArray:
function isArray(arr){ return arr instanceof Array; } var arr1 = [1, 2, 3]; var arr2 = new Array(1, 2, 3); console.log(isArray(arr1));//true; console.log(isArray(arr2));//true;
创建数组的两种方法结果都一样。
3.isJson
function isJson(obj){ return obj.constructor == Object; } var json = {"a":1, "b":2}; console.log(isJson(json));//true
json的检测用到了constructor,说到constructor就不得不说prototype,那有的朋友就会问,说了prototype,为什么不说说面向对象呢?你看,这一说就停不下,就没完了,所以,我选择不说。^_^