Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   функции с замыканием (https://javascript.ru/forum/css-html/50484-funkcii-s-zamykaniem.html)

serrrgggeee 27.09.2014 21:46

функции с замыканием
 
скажите где берутся аргументы a,b в функции чтото не пойму
String.method('deentityify', function (){

//Таблица сущностей. Отображает имена сущностей на символы.

var entity = {
	quot: '"'
	lt:   '<'
	gt:	  '>'
};

// Возвращаем метод deentityify.
	return function () {
	
	// Метод deentityfy. Метод строки вызывается для эамены найденной
	// подстроки, начинающейся с символа '&' и заканчивающейся символом ';'.
	// Если символы внутри есть в таблице сущностей, то эти элементы
	// заменяются символами из таблицы. Метод используется в регулярных 
	// выражениях
	
			return this.replase(/&([A&;]+);/g,
				function (a, b) {
					var r = entity[b];
					return typeof r === 'string' ? r : a;
				}
			);
	
	};
}());



document.writeln(
	'&lt;&quot;&gt;'.deentityfy()); // <">

Sweet 28.09.2014 00:37

Из регулярного выражения. Читай раздел Функция замены

serrrgggeee 28.09.2014 08:43

прочитал, но не понял, если логически, то а достается выражение а b позиция в таблице на которую следует произвести замену?

Sweet 28.09.2014 15:38

Цитата:

Сообщение от serrrgggeee
логически

А не надо логически, нужно доки читать. И в статейке, которую я давал, всё доходчиво написано. Применительно к твоей регуляки (которая, к слову, с ошибкой: вместо "A" должно быть "^"): первый аргумент - совпавшая подстрока, например, &lt;, вторым - совпадение в скобках, например, lt, третьим - позиция, четвертым - вся строка. Короче, в трёх соснах заблудился, разбирайся.


Часовой пояс GMT +3, время: 05:06.