Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.07.2018, 10:47
Интересующийся
Отправить личное сообщение для NO_ONE Посмотреть профиль Найти все сообщения от NO_ONE
 
Регистрация: 01.03.2014
Сообщений: 19

Полифилл в анонимной функции
Здравствуйте!

Интересует следующий вопрос. В анонимной функции есть несколько полифиллов (для Object.assign, element.remove(), string.endsWith(), string.startsWith()). Все эти фишки соответственно используются в теле функции ниже по коду. Сама анонимная функция - это отдельный .js файл, подключаемый в head:

// file.js
!function (b, c, d, e) {

  Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(a,b){"use strict";if(void 0===a||null===a)error("Cannot convert first argument to object");for(var c=Object(a),d=1;d<arguments.length;d++){var e=arguments[d];if(void 0!==e&&null!==e)for(var f=Object.keys(Object(e)),g=0,h=f.length;g<h;g++){var i=f[g],j=Object.getOwnPropertyDescriptor(e,i);void 0!==j&&j.enumerable&&(c[i]=e[i])}}return c}});
  "remove" in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)});
  String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(a,b){var c=this.toString();(void 0===b||b>c.length)&&(b=c.length),b-=a.length;var d=c.indexOf(a,b);return d!==-1&&d===b}});
  String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{enumerable:!1,configurable:!1,writable:!1,value:function(a,b){return b=b||0,this.lastIndexOf(a,b)===b}});

// some code...

}(arg1,arg2,arg3,arg4);
// end of file.js


А если я использую, например, string.endsWith() или любую другую фишку вне файла, допустим, в body страницы, эти полифиллы уже не будут работать из-за области видимости? Можно ли их как-то "распространить" на весь window и при этом не выносить из функции?

Просьба не сильно запинывать ногами, я в процессе изучения. x)
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2018, 12:07
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Будут(если конечно функция была вызвана заранее).
Эти полифилы расширяют глобальные объекты: Object, Element и String, а не что-то локальное внутри функции.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов объекта из анонимной функции. Подскажите как работает код. mnzi Events/DOM/Window 9 16.02.2018 11:45
вернуть значения анонимной функции Gowa Events/DOM/Window 2 17.04.2016 01:19
запуск анонимной функции при загрузке страницы golden_yuna Общие вопросы Javascript 10 16.04.2016 20:42
Функция внутри анонимной функции igorz Общие вопросы Javascript 6 16.04.2015 20:15
callback для анонимной функции gh321 jQuery 2 18.11.2013 13:20