关于JavaScript调用函数
我想问一个关于JavaScript关于JavaScript调用函数,javascript,Javascript,我想问一个关于JavaScriptcall()函数的小问题。我已经开始深入学习JavaScript,但我无法理解它。为什么在这个示例中我会得到这样的结果: var args = Array.prototype.slice.call(arguments); 有了这个,我得到了一个错误 var args = Array.prototype.call(arguments); 这两个函数都存在于数组的\uuu proto\uu中,因为我知道数组是扩展函数。在本例中,返回trueArray.\uuuu
call()
函数的小问题。我已经开始深入学习JavaScript,但我无法理解它。为什么在这个示例中我会得到这样的结果:
var args = Array.prototype.slice.call(arguments);
有了这个,我得到了一个错误
var args = Array.prototype.call(arguments);
这两个函数都存在于数组的\uuu proto\uu
中,因为我知道数组是扩展函数。在本例中,返回trueArray.\uuuuu proto\uuuu==Function.prototype
类型:
typeof(Array.prototype.slice)
> "function"
(这是一个函数,您可以使用call
-请参阅function.prototype.call
)
(这不是一个函数,您不能使用
call
-“看不见”Object.prototype.call
)call
是函数的一种方法Array.prototype.slice
是一个函数,但Array.prototype
不是,因此它没有调用
方法
Array.__proto__ === Function.prototype
呵呵。我认为您偶然发现了一些内部实现,实际上它并不是这样工作的。根据您在计算机科学/软件工程方面的实际经验,我很想建议您忽略这个特别的人工制品
Prototype是对象类的一个实例,它们没有调用
方法(除非由用户或库定义)。所以,which.prototype.call
应该按预期调用一个错误
另一种perculiar行为:
对象实例函数
//->对
对象的函数实例
//->没错@Victoriano你不明白什么?只能调用函数和数组。原型不是函数。这其中哪一部分让你感到困惑,特别是。谢谢你的建议,我会考虑的。正如我现在谈论的原型链一样,这是这样的
数组->>函数->>对象
,还是我遗漏了一些东西?
Array.__proto__ === Function.prototype