{}
- это один способ объявления пустого объекта. Он называется литеральным синтаксисом объекта, и вы можете прочитать больше об этом здесь .
Метод call()
- это метод JavaScript (не jQuery). Опять же, вы можете прочитать больше об этом здесь . По сути, call()
позволяет вам изменить значение this
внутри функции, для которой вы вызываете call()
. Это относится к apply()
;
var array = new Array;
function foo() {
alert(this === array);
};
foo(); // false;
foo.call(array); // true
Рассматривая код в частности, мы перебираем массив и используем метод hasOwnProperty
, чтобы проверить, существует ли значение (i
) в someArray
массив (в отличие от цепочки прототипов someArray
.
Что касается того, почему мы используем {}.hasOwnProperty
вместо someArray.hasOwnProperty
, я предполагаю , что пользователь может защищать от hasOwnProperty
, объявленного на someArray
(используя пустой объект). Если бы он этого не сделал, то было бы возможно следующее:
var someArray = [];
someArray.hasOwnProperty = function () {
return true; // always return true... muahahaha.
}
Или даже;
var someArray = [];
someArray.hasOwnProperty = 4; // now hasOwnProperty isn't even a function. Calling someArray.hasOwnProperty() will result in an error.