Как лучше сделать функцию обработки строки
Допустим есть потребность вывести спецсимволы.
можно сделать так var entityMap = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' }; function escapeHtml(string) { return String(string).replace(/[&<>"'\/]/g, function (s) { return entityMap[s]; }); } alert(escapeHtml('<html>')); т.е. объявились две левые сущности в пространстве имён Вопрос: не лучше ли сделать так? В чем минусы такого способа? String.prototype.escapeChars = function() { String.prototype.entityMap = String.prototype.entityMap || { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' }; return this.replace(/[&<>"'\/]/g, function (s) {return String.prototype.entityMap[s];}); } alert('<html>'.escapeChars()); |
Цитата:
|
это на этом прекрасном форуме нарушение синтаксиса, после того как делаешь предварительный просмотр и сохраняешь пост,
'заменяется на апостроф и скрипт становится неработоспособным. я конечно оценил юмор ответа, но по существу есть что-нибудь? Где все эти господа теоретики, любители красоты кода? |
Palama,
Если код для внутреннего потребления, оберните всё в аноним (function() { var entityMap = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' }; function escapeHtml(string) { return String(string).replace(/[&<>"'\/]/g, function (s) { return entityMap[s]; }); } alert(escapeHtml('<html>')); }()); Если для наружного, типично вводят единый объект для сайта/форума, к примеру: var FORUM = {} И привязываются к нему,(те же BB-коды) FORUM.BB_code={};FORUM.BB_code['B'];FORUM.BB_code['URL']; |
Часовой пояс GMT +3, время: 21:55. |