?首先,后端返回一个变量,前端不知道是数组还是对象;其次,对象和数组原型链上的方法不同。可以用typeof吗?不能。null,array,object,这三个都是使用typeof()返回“object”typeof可以返回的类型有:number,string,boolean,undefined,object,functiontypeof(undefined)//"undefined"typeof(null)//"object"typeof([1,2])//"object"typeof({a:1})//"object"typeof('123')//"string"typeof(1)//"number"typeof(true)//"boolean"typeof(Array)//"function"typeof(()=>{})//typeof箭头函数返回也是"函数"展开typeof()记住typeof的返回值是stringTypetypeof(typeof(null))//"string"typeof(typeof(undefined))//"string"typeof(undefined)===undefined//falsetypeof(undefined)==="undefined"//如何判断true变量是数组吗?a=[]ainstanceofArray//truea.constructor===Array//trueArray.prototype.isPrototypeOf(arr)//原型链判断Array.isArray(arr)//isArraymethodObject.prototypeinJSarraymethodArray.toString.call(a)//Object原型上的toString方法返回[objectconstructorName]的字符串格式。但是,instanceof和.constructor有缺点。数组构造器,new会在一个数组对象下失败leta=[]//iframe元素会创建一个包含另一个文档的内联框架variframe=document.createElement("iframe")document.body.append(iframe)//获取一个由所有iframe元素组成的数组,通过window.frames//得到iframe的Array构造函数,赋值给xArrayvarxArray=window.frames[window.frames.length-1].Array//通过iframe的Array构造函数,new数组对象vararr=newxArray(1,2,3)console.log(arrinstanceofArray)//falseconsole.log(arr.constructor===Array)//false
