Вызов функции с apply

Чем вызов функции с apply отличается от простого вызова функции?

Apply это вызов функции с подменой контекста и с переменным количеством аргументов, вот пример:

function func() {
alert(this);
for
(var i = 0; i < arguments.length; i ) {
alert(arguments[i]);
}
}

func(1, 2, 3);

func.apply('abc', [1, 2, 3, 4]);