我一直在试图理解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
在哪里获得价值? _class
与this._class
是不同的东西,并且没有其他引用_class
。 最佳答案
在该函数中,_class
与this._class
相同,因为this
在自动执行的函数中引用窗口对象。实际上,这使_class
函数成为全局变量。
基本概念如下:http://jsfiddle.net/hYQab/