Я просто читал this answer regarding hashing in Javascript, и, хотя он был определенно быстрее, чем принятый ответ, для функциитребуется функция reduce
.Зачем проверять прототип, а не экземпляр?
Проверка наличия функции reduce
достаточно проста; но в то время как большинство проверок, которые я делаю (и видел), проверяют на прототипе, это только заставило меня задуматься: каковы последствия проверки самого экземпляра? Почему проверка прототипа кажется предпочтительной?
// i.e.
if (!!Array.prototype.reduce) { }
// vs
if (!![].reduce)
У экземпляра определенно должен быть экземпляр, так что это одно, но это так?
'Array' может * технически * быть перезаписанным, но конструктор' [] 'не может – Ian
@ Ian-if Array перезаписывается, у вас есть проблемы с большим количеством проблем ... ;-) – RobG
в любом случае, вы можете опустить "!!" поскольку методы «if» равны true или undefined, что является ложным ... Если вы проверяете метод массива, у вас, вероятно, уже есть массив, поэтому вам не нужен пустой, чтобы нажать «if (myArr.reduce) ", и понюхание вашей точной переменной более точно для загрузки. – dandavis