Я встречал оба способа применения прототипов массива к нативному объекту:
arr = Array.prototype.slice.call(obj);
arr = [].slice.call(obj);
Подобным образом получение истинного типа нативного массива -подобный объект:
type = Object.prototype.toString.call(obj);
type = {}.toString.call(obj);
Простой тест:
function fn() {
console.log(
Array.prototype.slice.call(arguments),
[].slice.call(arguments),
Object.prototype.toString.call(arguments),
{}.toString.call(arguments)
);
}
fn(0,1);
Fiddle: http://jsfiddle.net/PhdmN/
Мне они кажутся идентичными; первый синтаксис используется чаще, но второй определенно короче. Есть ли недостатки при использовании более короткого синтаксиса?