Использование событий onFocus
и onBlur
позволяет вам достичь этого, т.е.:
onfocus="if(this.value=='EGTEXT')this.value=''"
и
onblur="if(this.value=='')this.value='EGTEXT'"
Полный пример выглядит следующим образом:
<input name="example" type="text" id="example" size="50" value="EGTEXT" onfocus="if(this.value=='EGTEXT')this.value=''" onblur="if(this.value=='')this.value='EGTEXT'" />
Указатели на функции позволяют передавать функции как переменные. Указатель на функцию - это в основном устаревший метод передачи функций на языках, которые не поддерживают методы первого класса, таких как C / C ++.
Методы первого класса В основном означает, что вы можете передавать функции как переменные. Методы (свободно) означают функции. В основном это означает функции первого класса . Проще говоря, это означает, что функции рассматриваются как «граждане первого класса», как переменные. В старые времена (C / C ++), поскольку мы не могли напрямую передавать функцию, и нам приходилось прибегать к обходным путям, таким как указатели на функции, мы говорили, что функции не являются первоклассными гражданами.
Делегаты это ответ C # на первоклассные методы. Делегаты несколько более эффективны, потому что они включают замыкания , рассмотрите следующий фрагмент кода:
void foo( int a )
{
void bar() { writefln( a ); }
call( &bar );
}
void call( void delegate() dg ) { dg(); }
int main( char[][] args ) {
foo( 100 );
}
Обратите внимание, что bar
может ссылаться на локальную переменную a
, потому что делегаты могут использовать Замыкания.
Замыкания поначалу могут сбивать с толку. Но определение ленивца может быть очень простым. Это в основном означает, что переменная может быть доступна ожидаемым человеком способом. Другими словами, на переменную можно ссылаться в тех местах, где они выглядят так, как будто они присутствуют, путем чтения структуры исходного кода. Например, глядя на фрагмент кода выше. Если бы у нас не было закрытия, bar
не смог бы ссылаться на a
, потому что a
был локальным только для foo
, но не бар
, это еще одна функция.
Dynamic Proxy - лишняя. Это не относится к этим предметам. Для его объяснения требуется очень длинный текст. Он основан на знаменитом шаблоне прокси . Проблема с шаблоном прокси заключалась в том, что класс прокси должен реализовывать тот же интерфейс, что и субъект. Динамический прокси в основном означает использование рефлексивного подхода для обнаружения метода субъекта, чтобы можно было освободить ProxyPattern от привязки к интерфейсу субъекта.
только те, о которых я знаю:
Замыкание - это концепция языка программирования. Делегат - это его реализация в MS.NET.
Делегат в MS.NET - это строго типизированный указатель на метод объекта (экземпляр делегата указывает и на объект, и на его метод). Также существует способ объединить несколько экземпляров недействительного делегата в один.