【发布时间】:2015-11-16 00:51:50
【问题描述】:
function H() {
}
H.prototype.K = function() {
console.log(Array.prototype.slice.call(arguments, 1)); //gives [20, 30, 40]
console.log(Array.prototype.slice(arguments, 1)); //gives []
}
H.prototype.K(10, 20, 30, 40)
为什么直接调用 slice 会给出空数组?如果我可以直接调用函数K,为什么不能直接调用slice?
【问题讨论】:
-
鉴于您致电
H.prototype.K(...),您似乎不了解如何使用原型继承的一些基础知识。应该很少这样做。 -
This answer 可能会帮助您更好地理解这样做的原因。
-
Array.prototype.slice(arguments, 1)等价于Array.prototype.slice.call(Array.prototype, arguments, 1)。请注意,call始终接受上下文作为第一个参数。这应该更容易追踪行为.. -
因为
Array.prototype是一个空数组。
标签: javascript prototype call slice