@kevus

Что делает этот участок кода (JS)?

(function(){var a=function(){this.exit=this.b;this.close=this.close;this.delayCloseButton=this.a};a.prototype.b=function(){window.console&&window.console.log("Exit API: Close requested.")};a.prototype.a=function(e){e=Math.min(e,5);window.console&&window.console.log("Exit API: Close Button will not appear for "+e+" seconds.")};var b=new a,c=["ExitApi"],d=this;
c[0]in d||!d.execScript||d.execScript("var "+c[0]);for(var f;c.length&&(f=c.shift());)c.length||void 0===b?d=d[f]&&d[f]!==Object.prototype[f]?d[f]:d[f]={}:d[f]=b;}).call(this);
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
Вопрос далеко не простой. Если прогнать через jsbeautifier.org и убрать шум, то останется такой код:

(function(){

function ExitApi () {};
  
ExitApi.prototype.exit = function() {
   console.log("Exit API: Close requested.")
};

ExitApi.prototype.delayCloseButton = function(e) {
   if (e < 5) e = 5;

   console.log("Exit API: Close Button will not appear for " + e + " seconds.")
};

var b = new ExitApi(),
   method = "ExitApi",
   _this = this;

if (!method in _this && _this.execScript) {
  _this.execScript("var " + method);
}

if (!_this[method] || _this[method] === Object.prototype[method]) _this[method] = ExitApi;

}).call(this);


_this в данном случае скорее всего объект window или аналог.
Если оставить только суть, то она приблизительно такова:

(function(){

function Foo () {};
  
Foo.prototype.exit = function() {
   console.log("Exit API: Close requested.")
};

Foo.prototype.delayCloseButton = function(e) {
   if (e < 5) e = 5;

   console.log("Exit API: Close Button will not appear for " + e + " seconds.")
};

this.ExitApi = new Foo();

}).call(this);


То есть он создает инстанс, у которого есть два метода, которые исключительно пишут в консоль и не выполняют никакой задачи. Смысла в этом коде пока нет, выглядит словно старались запутать специально.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы