Вы можете изменить прототип String, если хотите. Модификация прототипа String, как правило, неодобрительно, но я лично предпочитаю этот метод, поскольку он делает очиститель кода IMHO.
String.prototype.rtrim = function(s) {
return this.replace(new RegExp(s + "*$"),'');
};
Затем вызывается ...
var s1 = "this is a test~";
var s = s1.rtrim('~');
alert(s);
Метаданные являются частями информации от самого исходного кода, который хранится в специальном разделе в блоке при компиляции. Это - действительно деталь реализации в том, как структурированы блоки. Для типичной разработки приложений C# Вы не должны действительно знать об этом. Главным образом необходимо при разработке инструментов разработчика.
термин "метаданные" является несколько вводящим в заблуждение. Метаданные блока включают материал от кода как константы и строковые литералы, который не является действительно метаданными в обычном значении слова. Более правильный термин, возможно, был бы неисполняемыми данными.
, Когда C# компилируется в блок, вывод компиляции разделен на два раздела. IL, который является фактическим исполняемым кодом в формате байт-кода и "метаданными", которые являются всеми другими материал: введите, взаимодействуйте через интерфейс, и объявления элемента, сигнатуры методов, константы, внешние зависимости и так далее.
Берут эту программу:
class Program
{
public static void Main(string[] args)
{
var x = 2 + 2;
Console.WriteLine("Hello World!");
}
}
, Когда эта программа компилируется в блок, она разделена на метаданные и IL. Метаданные содержат эти объявления (представленный в независимом от языка двоичном формате):
class Program
{
public static void Main(string[] args);
}
, Кроме того, метаданные содержат строковый литерал "Hello World!"
, и информация что ссылки на сборки System.Console.WriteLine
в mscorlib.dll
.
Только эта часть компилируется в IL:
var x = 2 + 2;
Console.WriteLine("Hello World!");
С протестом, что ссылка метода и литеральная строка представлены в IL как указатели в метаданные. С другой стороны, объявления метода в метаданных имеют указатели в IL к коду, которые реализуют тело метода.
, Таким образом, это сводится к способу разделить исполняемый (обязательный) код IL от неисполняемых (декларативных) частей.
, Почему это разделение полезно? Поскольку это позволяет инструментам извлекать и использовать метаданные, не имея необходимость на самом деле выполнять любой из IL. Например, Visual Studio в состоянии предоставить завершение кода участникам, определенным в блоке только путем чтения метаданных. Компилятор может проверить, что методы, названные от других блоков на самом деле, существуют и соответствие параметров и так далее.