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

我们要么检查数组的类型,要么检查对象的类型,它总是在 JavaScript 中打印对象。为什么这样?


let arr=[1,3,4];

let obj={1:"44",num:44};


console.log(typeof(arr)) //object

console.log(typeof(obj)) //object

有没有办法将 typeof(array) 视为数组?


临摹微笑
浏览 361回答 3
3回答

尚方宝剑之说

尝试使用instanceof运算符const arr = [];console.log(arr instanceof Array); // trueconst obj = {};console.log(obj instanceof Array); // false

噜噜哒

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

湖上湖

在 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 trueconsole.log('object', typeof arr)// object object
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript