2015-02-21 3 views
1

В чем разница между [] .slice и Array.prototype.slice?[] .slice vs Array.prototype.slice

При поиске я обнаружил, что Array.prototype.slice будет быстрее, чем [] .slice на jsperf.com/array-prototype-slice-vs-slice.

Почему Array.prototype.slice быстрее, чем [] .slice?

Я проверил [].slice or Array.prototype.slice. Более яркое описание будет полезно.

Благодаря

ответ

4

Почему Array.prototype.slice быстрее, чем [] .slice?

[] является экземпляром Array, поэтому дополнительные накладные расходы, скорее всего, время, необходимое для создания экземпляра объекта.

+0

Спасибо, я понял так, но запутался от http://stackoverflow.com/questions/9006553/slice-or-array-prototype-slice#comment-11289799, а затем, видя влияние на производительность по адресу://jsperf.com/array-prototype-slice-vs-slice +1 – sarbbottam

4

.slice() - метод прототипа массива. Он определен на объекте прототипа Array, Array.prototype, что означает, что Array.prototype.slice - это прямой способ его ссылки.

экземпляры массива, такие как [], наследуют от прототипа Array, поэтому [].slice разрешает Array.prototype.slice.

Если вам нужно использовать этот метод несколько раз, хороший подход поместить свою ссылку в переменную в вашей внешней сферы:

var slice = Array.prototype.slice; 

, а затем использовать эту переменную с помощью .call() и .apply() вызовов, например

slice.call(someObj) 
+0

Спасибо за разъяснение разницы, я в основном искал причину воздействия производительности. +1 – sarbbottam

Смежные вопросы