我试图理解下面的代码(来自MDN关于Array.prototype.slice的文章),以了解其运行过程中发生的事情。
function list() {
return Array.prototype.slice.call(arguments);
}
我的理解是return语句获得了对Array.prototype.slice方法的引用。这引出了我的第一个问题,“既然这是slice方法的引用,为什么它不需要被调用,例如Array.prototype.slice().call(arguments)?”
假设这是对slice方法的调用,并且由于没有立即传递参数,我的第二个问题是“JS是否‘看到’链接到slice的call方法,然后尝试从call(arguments)方法中解析一个值传递给slice?”
如果是这种情况,那么这种方法链接是如何进行的?JS是从左到右执行链接操作的吗?当没有明确传递参数给一个方法时,它会尝试从后续方法中解析一个值来隐式地返回给左侧的“空”调用者吗? 谢谢。