Array.prototype函数来自哪里?

时间:2017-02-07 03:39:13

标签: javascript

由于Array.prototype本身返回一个空数组,所有函数都来自哪里?

为什么我可以调用类似Array.prototype.sort的函数,甚至Array.prototype不是对象?

Array.prototype.__proto__是一个对象。

我对Function.prototype的情况有同样的疑问。

2 个答案:

答案 0 :(得分:2)

Array.prototype是一个对象,您用于数组的大多数函数都来自它。所以它是原型

打开chrome dev栏,并检查如下图所示。

enter image description here

答案 1 :(得分:0)

  

甚至Array.prototype不是对象?

你是怎么得到这个想法的?这是一个对象:

typeof Array.prototype // "object"

因此它可以拥有像其他所有对象一样的属性。它确实:

Array.prototype.hasOwnProperty("sort") // true
Array.prototype.sort // function(compare) { … }

对于每个其他数组都是一样的,您可以在每个javascript对象上创建自定义属性:

var foo = [];
foo.bar = "baz";
typeof foo.bar // "string"
Array.isArray(foo) // true