vue_如何判断变量是数组还是对象
⼀、typeof判断数据类型(判断数组跟对象都返回object)
console.log(typeof null); // "object"
console.log(typeof function () {
return 1;
}); // "function"
console.log(typeof '梦龙⼩站'); // "string"
console.log(typeof 1); // "number"
console.log(typeof a); // "undefined"
console.log(typeof undefined); // "undefined"
console.log(typeof []); // "object"
console.log(typeof NaN); // "number"
console.log(typeof {}); // "object"
⼆、instanceof判断对象的原型链是否是指向构造函数的prototype
  var arr = [1,2,3,1];
  console.log(arr instanceof Array)//true
三、对象的constructor属性
  var arr = [1,2,3,1];
  console.structor === Array)//true
四、String.call(arr)
  利⽤对象的toString可以准确判断是什么类型,call()改变this指向,这⾥是借⽤Object的⽅法,然后有⼈可能会问为什么不直接⽤String⽽要借⽤Object的⽅法,
  我们看下⾯
console.log(String.call("jerry"));//[object String]
console.log(String.call(12));//[object Number]
console.log(String.call(true));//[object Boolean]
vue逗号分割的字符串转数组console.log(String.call(undefined));//[object Undefined]
console.log(String.call(null));//[object Null]
console.log(String.call({name: "jerry"}));//[object Object]
console.log(String.call(function(){}));//[object Function]
console.log(String.call([]));//[object Array]
console.log(String.call(new Date));//[object Date]
console.log(String.call(/\d/));//[object RegExp]
console.log(String.call(new Person));//[object Object]
直接⽤toString
console.log("jerry".toString());//jerry
console.log((1).toString());//1
console.log([1,2].toString());//1,2
console.log(new Date().toString());//Wed Dec 21 2016 20:35:48 GMT+0800 (中国标准时间)
console.log(function(){}.toString());//function (){}
console.String());//error
console.String());//error
  因为toString为Object原型上的⽅法,⽽Array、Function都是Object的实例,实例重新改写了原型上的toString⽅法,不同的对象调⽤toString⽅法,调⽤的是改写之后的⽅法
  (转成各种类型的字符串),⽽不会调⽤Object原型上的toString()⽅法,因此直接调⽤不能判断对象类型
var arr=[1,2,3];
console.log(Array.prototype.hasOwnProperty("toString"));//true
console.String());//1,2,3
delete String;//delete操作符可以删除实例属性
console.log(Array.prototype.hasOwnProperty("toString"));//false
console.String());//"[object Array]"
  我们可以看到,删除实例上的toString⽅法后调⽤的是Object原型上的toString()⽅法,返回对象类型
五、es6的⽅法——Array.isArray()
  Array.isArray([]) //true
六、看好多博客说⽤length判断,这个其实不准确
var obj={a:1}
var arr = []
console.log(obj.length)//undefined
console.log(arr.length)//0
obj.length = 1
console.log(obj.length)//1
对象可以直接添加length这个属性,就⽆法区分了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。