Попытка понять конструкцию кода в evercookie - PullRequest
2 голосов
/ 07 июня 2011

Я пытался понять код Evercookie Сэми Камкара, и он делает, по крайней мере, одну вещь, которую я просто не понимаю.Соответствующий код можно посмотреть в Интернете по адресу http://code.google.com/p/beef/source/browse/trunk/modules/beefjs/lib/evercookie.js?spec=svn604&r=604.

. Мой вопрос о том, как этот код устанавливает evercookie сам по себе.Соответствующая конструкция:

var evercookie = (function () {
  this._class = function() { 
      ... 
  }; 
  return _class;
})();

Я понимаю, что evercookie предназначен для использования в качестве конструктора (несмотря на то, что не соблюдается соглашение об использовании конструкторов с большой буквы), и я понимаю, что evercookie устанавливается для возвратаанонимная, самоисполняющаяся функция.Если я не сбит с толку больше, чем я думаю, evercookie следует установить в значение, которое _class имеет в области действия внешней (анонимной) функции.Что я не следую: откуда _class получает значение?_class не то же самое, что this._class, и нет другой ссылки на _class.

1 Ответ

2 голосов
/ 07 июня 2011

В этой функции _class совпадает с this._class, поскольку this ссылается на объект окна в автоматически выполняемой функции.По сути, это делает функцию _class глобальной переменной.

Вот основная идея: http://jsfiddle.net/hYQab/

...