Как я могу «пространство имен» моих прототипов - PullRequest
0 голосов
/ 17 февраля 2011

Я намерен указать пространство имен моей библиотеки полезных методов, но моя библиотека также включает в себя несколько прототипов.Например,

// Utility Functions    - Trim() removes trailing, leading, and extra spaces between words
String.prototype.Trim = function () { var s = this.replace(/^\s+/,"").replace(/\s+$/,""); return s.replace(/\s+/g," "); };
// Escapes characters for use with a regular expression
String.prototype.EscapeR = function () { return this.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); };
Date.prototype.getMonthName = function() {
    if ( !this.mthName ) this.mthName = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    return this.mthName[this.getMonth()];
};

Как я могу (или я должен) включить их в свое пространство имен?

(Обратите внимание, что я не использую JQuery.) Спасибо за любые подсказки заранее.Энди.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Самое простое решение - просто использовать собственный префикс пространства имен. Тем не менее, вы можете сделать некоторые хитрые вещи, используя нестандартный Mozilla __noSuchMethod__: используя monkey.js , вы можете сделать

var names = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
    'Sep', 'Oct', 'Nov', 'Dec' ];

MONKEY.patch(Date).getMonthName = function() {
    return names[this.getMonth()];
};

var date = MONKEY(new Date);
alert(date.getMonthName());

Стандартная совместимая версия может быть сделана, как только Прокси-серверы ECMAScript-Harmony приземлились ...

0 голосов
/ 17 февраля 2011

Вы можете инкапсулировать их в обычно именуемый подобъект, например:

String.prototype.stuff = {
  Trim: function() { ... }
}
Date.prototype.stuff = {
  getMonthName: function() { ... }
}

Конечно, это только держит пространство имен ваших методов относительно их объекта-контейнера, но я предполагаю, что это то, для чего вы стреляете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...