由于Array.prototype
本身返回一个空数组,所有函数都来自哪里?
为什么我可以调用类似Array.prototype.sort
的函数,甚至Array.prototype不是对象?
Array.prototype.__proto__
是一个对象。
我对Function.prototype
的情况有同样的疑问。
答案 0 :(得分:2)
答案 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