为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 JavaScript 中的 typeof(array) 类型是对象而不是数组?

为什么 JavaScript 中的 typeof(array) 类型是对象而不是数组?

临摹微笑 2022-11-11 13:50:49
我们要么检查数组的类型,要么检查对象的类型,它总是在 JavaScript 中打印对象。为什么这样?let arr=[1,3,4];let obj={1:"44",num:44};console.log(typeof(arr)) //objectconsole.log(typeof(obj)) //object有没有办法将 typeof(array) 视为数组?
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

尝试使用instanceof运算符

const arr = [];

console.log(arr instanceof Array); // true


const obj = {};

console.log(obj instanceof Array); // false



查看完整回答
反对 回复 2022-11-11
?
噜噜哒

TA贡献1784条经验 获得超7个赞

因为 anarray在技术上是一种类型object- 只是具有某些能力和行为,例如附加方法Array.prototype.push()Array.prototype.unshift()。数组是常规对象,其中整数键属性和长度属性之间存在特定关系。

要确定您是否有专门的数组,您可以使用 Array.isArray().


查看完整回答
反对 回复 2022-11-11
?
湖上湖

TA贡献2003条经验 获得超2个赞

在 JavaScript 中,几乎所有东西都是对象。


它使用原型链来实现继承。


您可以只使用 console.log( [] ) 并查看原型部分以查看它是从对象继承的。


这是制作自己的数组的简单方法。


function MyArray(){

Object.defineProperty(this, 'length', {

    value: 0,

    enumerable: false,

    writable: true,

    })

}


MyArray.prototype.push = function(elem){

    this[this.length] = elem

    this.length++

    return this.length

}



MyArray.prototype.isMyArray = function(instance){

    return instance instanceof MyArray

}



var arr = new MyArray()

arr.push(1)

arr.push(2)

arr.push(3)



console.log('instance', MyArray.prototype.isMyArray( arr ))

// instance true

console.log('object', typeof arr)

// object object


查看完整回答
反对 回复 2022-11-11
  • 3 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信