Я сталкивался с обоими способами применения прототипов Array к собственному объекту:
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);
Скрипка: http://jsfiddle.net/PhdmN/
Они кажутся мне идентичными; первый синтаксис используется чаще, но второй определенно короче. Есть ли недостатки при использовании более короткого синтаксиса?