【发布时间】:2011-11-28 19:05:26
【问题描述】:
我正在研究apply,我试图理解为什么我正在研究的代码只传递一个参数来应用。
我先定义现状:
var Quo = function(string) {
this.status = string;
};
接下来我定义get_status:
Quo.prototype.get_status = function() {
return this.status;
};
我定义了statusObject:
var statusObject = {
status: 'yo!'
};
这就是我迷路的地方:
var status = Quo.prototype.get_status.apply(statusObject);
// status is 'yo!'
根据documentation“应用使用给定的 this 值和作为数组提供的参数调用函数。”您可以在案例中看到,使用 apply 我只传递了一个参数,我相信它定义了“this”。你能弄清楚这个方法到底发生了什么吗,为什么应用是必要的,为什么在这种情况下我只能将一个参数传递给该方法,当它声明需要两个时。谢谢。
【问题讨论】:
-
get_status函数不需要参数,所以不需要提供参数。如果提供了它们,无论如何它们都会被忽略。代码可以很容易地使用call。 -
.apply不是必需的,.call会做同样的事情。.apply是将未知数量的参数传递给此处不需要的函数的唯一方法。问题是什么? :)
标签: javascript this var apply