fest icon indicating copy to clipboard operation
fest copied to clipboard

Микрооптимизация

Open monolithed opened this issue 12 years ago • 6 comments

1.

Добавить враппер:

var global = function (global) {
   return global;
}(this);

2.

Чтобы неймспейс fest не терялся при минификации, нужно заменить:

if (!x.fest) 
     x.fest = {};

x.fest['index'] = function(__fest_context) {
    ...

На:

if (!x['fest']) 
     x['fest'] = {};

x['fest']['index'] = function(__fest_context) {
    ...

3.

file = file.replace(/\'/g, "\\'").replace(/\"/g, '\\"').replace(/\\/g, '\\'); // \', \", \

Мне кажется что так не только лучше, но и правильней:

file = file.replace(/['"\\]/g, '\\$&'); // \', \", \\

monolithed avatar Oct 10 '13 13:10 monolithed

Саша, всё отлично, присылай pull request.

RubaXa avatar Oct 10 '13 13:10 RubaXa

@latrekc, посмотри 1, а то у меня сомнения. @eprev, а ты 3 :]

RubaXa avatar Oct 10 '13 19:10 RubaXa

@latrekc, посмотри 1, а то у меня сомнения.

s.tugovikov@win49:~/cloud.mail.ru (i18n *)$ node -e 'console.log((function(global) { return global })(this) === global)'
true
s.tugovikov@win49:~/cloud.mail.ru (i18n *)$ 



console.log((function(global) { return global })(this) === window)
true

@eprev, а ты 3 ок, хотя я бы заматчил в скобки

latrekc avatar Oct 10 '13 19:10 latrekc

В тред призывается @termi ! Егор, не ты ли нашел в свое время, что в Опере нужно было через Function('return this') получать указатель на window?

eprev avatar Oct 11 '13 06:10 eprev

@eprev , Вроде это был @latrekc

RubaXa avatar Oct 11 '13 07:10 RubaXa

Все-таки, наверно стоит оставить конструктор Function. Т.к. фиг знает как этот враппер будет использоваться. Я имею ввиду, что гарантировано получение ссылки на глобальный объект возможно только через Function/eval.

void function () {
  'use strict';
  return function (global) {
     return global;
   }(this); // undefined
}();

...

void function () {
  'use strict';
   Function('return this')(); // Window
}();

В принципе, в Function нет ничего плохого, т.к. этот код будет оптимизирован компилятором как и весь остальной (в отличии от eval).

upd: ревертнул получение ссылки старым способом.

monolithed avatar Oct 23 '13 10:10 monolithed