powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript, недопонимаю
3 сообщений из 3, страница 1 из 1
JavaScript, недопонимаю
    #36440796
ICP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICP
Гость
<script>
function makeProperty(o, name, predicate)
{
var value;

o["set" + name] = function(v)
{
alert (predicate);
};
}

var o = {};

makeProperty(o, "Name", function(x) { return typeof x == "string"; });
o.setName("Franks");
o.setName("Frank");

</script>

Что-то не понимаю, каким образом сохраняется значение predicate между вызовами методов o.setName(), ведь это значение передавалось только makeProperty() и нигде не сохранялось.

Помогите, пожалуйста, разобраться.
...
Рейтинг: 0 / 0
JavaScript, недопонимаю
    #36440810
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ICP,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function makeProperty(o, name, predicate/* (2) */) {
	var value;
	o["set" + name] = function(v) {
		alert(predicate/* (3) */);
	};
}
var o = {};
makeProperty(o, "Name", function(x) {
	return typeof x == "string";
} /* (1) */);
o.setName("Franks");
o.setName("Frank");

То, что обозначено (1), (2) и (3) ссылается на одно и то же место в памяти. При этом ссылка (1) (но не значение, на которое она ссылается) уничтожается сразу* после скобки и точки с запятой после вызова makeProperty, ссылка (2) уничтожается сразу после выхода из функции makeProperty - происходит это потому, что обратится отдельно к ним вы никак не сможете: первая не именована, вторая недоступна вне данного конкретного вызова функции.

А вот ссылка (3) остается до тех пор, пока у o есть свойства setName - конкретно вы сами к predicate внутри o.setName уже обратиться не можете, но программа при каждом вызове o.setName может. Если удалить метод o.setName, то на функцию
Код: plaintext
1.
2.
function(x) {
	return typeof x == "string";
}
пропадет последняя ссылка и она будет сразу* уничтожена.

* сразу - не совсем сразу, а когда до нее доберется garbage collector.
...
Рейтинг: 0 / 0
JavaScript, недопонимаю
    #36440816
ICP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICP
Гость
an0nym,

Спасибо большое, теперь ясно где пробел в знаниях. Буду компенсировать.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript, недопонимаю
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]