当许多标准内置对象实际上是函数时,为什么将它们称为对象?

时间:2018-12-03 16:50:57

标签: javascript

在MDN上

Here is the list。一些标准的内置对象实际上是类似

的对象
typeof WebAssembly // "object"

但其他都是函数

typeof Array // "function"
typeof Number // "function"

1 个答案:

答案 0 :(得分:0)

在JS中,一切都是对象。包括函数和数组。

例如,您可以执行以下操作:

function foo() {}
foo.bar = 123
console.log(foo.bar) // 123

主语(字符串,数字,布尔值,未定义,空值,符号)是 kinda 对象:

let foo = 'bar'
console.log(foo.length) // 3
foo.length = 5
console.log(foo.length) // 3, because mutation of primitive objects is prohibited

关于ArrayNumber为什么是函数,而不仅仅是普通对象。 因为它们也被用作构造函数(与WebAssembly不同):

let arr = Array(1,2,3) // [1,2,3]
let num = Number('123') // 123