我一直在试图理解Samy Kamkar的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在哪里获得价值? _classthis._class是不同的东西,并且没有其他引用_class

最佳答案

在该函数中,_classthis._class相同,因为this在自动执行的函数中引用窗口对象。实际上,这使_class函数成为全局变量。

基本概念如下:http://jsfiddle.net/hYQab/

10-06 11:26