Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Неясен момент в коде (https://javascript.ru/forum/css-html-internet-explorer/11203-neyasen-moment-v-kode.html)

Golovastik 12.08.2010 17:17

Неясен момент в коде
 
Есть код:
Код:

<html><head>
<title>Тренировочный документ</title>
<script type='text/javascript'>

var bounty_obj;
window.onload = function () {
bounty_obj = document.getElementById('hint');
};

function bounty_show() {
    if (bounty_hide.T) {
        clearTimeout(bounty_hide.T);
        bounty_hide.T = 0;
    };
    bounty_obj.style.display = 'block';
};

function bounty_hide() {
    if (bounty_hide.T) {
        clearTimeout(bounty_hide.T);
        bounty_hide.T = 0;
    };

    bounty_hide.T = setTimeout(function(){
        bounty_obj.style.display = 'none';
        bounty_hide.T = 0;
    }, 1000);
};

</script>
</head>
<body>

<a href='page.html' onMouseOver='bounty_show()' onMouseOut='bounty_hide()'>Переход в будующее</a>
<div id="hint" style="display:none; position:absolute; left:10px; top:35px;"><img src='1.gif' alt=''></div>
Когда-то в студенную зимнюю пору,<br> я из лесу вышел, был сильный мороз,
Гляжу,поднимается <br> высоко в гору, кто? Лошадка несущая хворосту воз

</body>
</html>

По поводу кода:
В функции bounty_show()
Там делается сравнение
Код:

if (bounty_hide.T) {
clearTimeout(bounty_hide.T);
bounty_hide.T = 0;

Что будет означать вот это с точкой bounty_hide.T в сравнении?
Это значит доступ через мою созданную функцию с именем bounty_hide к какой-то другой переменной находящейся в другой функции что ли?
Меня смущает .Т, почему она может ещё и добавлятся к названию любой функции где угодно?

B@rmaley.e><e 12.08.2010 19:20

Через точку идет обращение к свойствам объектов (object.property). А в JS все - объект (кроме разве что null'а).

Golovastik 12.08.2010 19:26

Идёт обращение к свойству метода bounty_hide.?
А что это за такое свойтсво с именем .Т и где оно определено?

subzey 12.08.2010 19:29

Вот тут определено
bounty_hide.T = setTimeout(…
Это идентификатор таймаута (вызова кода через определенное время), чтобы потом его можно было очистить.

Golovastik 12.08.2010 19:31

Что означает вот это если что:

if (bounty_hide.T) { ????

subzey 12.08.2010 19:36

Если таймаут установлен

Golovastik 12.08.2010 19:47

То есть если свойство с именем Т которое получило значение от анонимной функции, то есть если оно его получило,которая что-то возвратила не равна нулю, а чему-то равна? Вот это имеется ввиду в этом месте?
if (bounty_hide.T) {

2)Как можно обращаться к свойству Т, если оно определено ниже, а сравнение идёт выше, использование свойства с именем Т, объекта bounty_hide

Kolyaj 12.08.2010 22:37

Цитата:

Сообщение от B@rmaley.e><e
А в JS все - объект

Да не всё, не всё.

Golovastik 13.08.2010 17:22

Ответьте пож. на 7-ой пост. Заранее благодарю.

maxbarbul 13.08.2010 18:47

2Golovastik:
bounty_hide - глобальный объект функция (функция - это, грубо говоря, наследник-расширение Object);
bounty_hide.T - создается при первом вызове функции bounty_hide;

Конструкция if (bounty_hide.T) не сработает (и не выдаст ошибку), поскольку неинициализированное свойство bounty_hide.T == undefined

К нему можно обращаться, его даже можно передать в функцию:
var a = 10

function dd(f)
{
    if (f)
        alert(1)
    else
        alert(0)
}

dd(a.s)


2 B@rmaley.e><e:

typeof null === "object"


Часовой пояс GMT +3, время: 04:07.