Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 21:49   #1
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию this

Не могу понять, какую роль играет оператор this в этом коде. Объясните пожалуйста.

Код:
<script type="text/javascript">
function cheloveche(parametr)
{
   this.pol = parametr; //Что вот это означет ?
}

var chelovek1 = new cheloveche('Мужчина');
alert(chelovek1.pol);  //и что означает вот это?
</script>
Syltan вне форума Ответить с цитированием
Старый 20.04.2010, 00:44   #2
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Всё, понял зис ссылается на объект chelovek1 , а от этого объекта ссылается на свойство этого объекта пол.
Syltan вне форума Ответить с цитированием
Старый 20.04.2010, 00:54   #3
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

cheloveche - класс. Через this вы обращаетесь ко внутренним свойствам этого класса.
По определению обращение через this - это обращение через родителя этого контекста.
Ваша ситуация:
Код HTML:
<script type="text/javascript">
function cheloveche(parametr) //это фукнкция-конструктор. Она вызывается тогда, когда создается класс.
{
   this.pol = parametr; //Присваивание внтренней переменной pol класса cheloveche значение parametr.
}

var chelovek1 = new cheloveche('Мужчина'); //А вот и само создание класса. С передачей значения 'Мужчина', которое будет обработано одноименной функцией-конструктором класса. Экземпляр класса кладется в переменную chelovek1.
alert(chelovek1.pol);  //а вот тут выводится уже значение внутренней переменной pol созданного класса chelovek1.
</script>
ООП - очень нужная и полезная вещь. На этом пострены множество нормальных языков программирования (тот же РНР, С, Java)
SkyM@n вне форума Ответить с цитированием
Старый 20.04.2010, 01:42   #4
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Я слышал что можно ещё вот таке писать,если дописать в функцию-конструктор вот такое, как это будет расшифровыватся и применятся?
Код:
 this.imya = function() { alert(parametr)}
Это так объвляется метод разве под навзанием имя?

Последний раз редактировалось Syltan; 20.04.2010 в 01:48.
Syltan вне форума Ответить с цитированием
Старый 20.04.2010, 02:01   #5
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Правильно слышали.
В итоге у вас получится 2 свойства класса cheloveche.
Первое свойство - это строковая переменная pol
И второе свойство - это метод, который в свою очередь тоже может что-то делать (в вашем примере - выводить сообщение со значением параметра parametr.
Его вызвать можно так:
Код:
chelovek1.imya();
SkyM@n вне форума Ответить с цитированием
Старый 20.04.2010, 02:16   #6
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Что странно ,что можно ещё и дописывать в функц-конструктор свойства ,к примеру chelovek1.yra = 'Privet mir';
находясь уже за пределами функции-конструктора.
Что-то не понятно как можно здесь сделать наследование, я читал что вроде нужно дописывать куда-то ключёвое слово prototype Только не могу понять как на этом примере дописать, чтоб произошло наследование.

Последний раз редактировалось Syltan; 20.04.2010 в 02:21.
Syltan вне форума Ответить с цитированием
Старый 20.04.2010, 02:20   #7
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Советую почитать об ООП вот тут:
http://dklab.ru/chicken/nablas/40.html
http://javascript.ru/tutorial/object/inheritance
http://habrahabr.ru/blogs/webdev/15444/

Очень познавательно расписано.
SkyM@n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц