Помощник
|
this - кто он и зачем? |
people2010
|
Сообщение
#1
|
||
|
|
||
|
|||
people2010
|
Сообщение
#2
|
|
Читаю здесь http://javascript.ru/tutorial/object/thiskeyword
function Animal(name) { this.name = name } animal = new Animal("beastie"); Если следовать согласно картинке по этой ссылке: 1. Конструктор Animal инициализирует объект под названием animal. 2. После того, как инициализация объекта под названием animal прошла. конструктор Animal создал где-то в оперативной памяти ячейку с названием this которая стала ссылаться на свойства и методы конструктора под названием Animal? 3. Что вызывается если уже всё вызвалось ,если следовать согласно картинке? Расшифруйте пожалуйста те, 3 пункта из той ссылки правильно. Заранее благодарю. |
|
|
alexdrob |
3.3.2011, 2:25;
Ответить: alexdrob
Сообщение
#3
|
|
Почитайте о ООП вообщем, не важно на каком языке вы пытаетесь выучить ООП. Есть у некоторых языков особенности, но вам нужно выучить сам принцип ООП.
|
|
|
people2010
|
Сообщение
#4
|
|
Где почитать, чтоб понять зачем нужен this, где не читал конкретики нету зачем он и зачем его пишут для каждого свойства и метода внутри класса.
|
|
|
alexdrob |
3.3.2011, 3:02;
Ответить: alexdrob
Сообщение
#5
|
|
Ну this как бы указатель на себя. То есть внутри класса вы указываете на то что вы обращаетесь к методам или переменным данного класса а не к общим.
Когда класс один то это не заметить. А вот создайте 2 экземпляра cat и dog. И не использовав this при создании второго переменная name будет перезаписана. Вот небольшой пример [JS] <script type="text/javascript"> var name = '' function Animal(val) { this.name = val } Animal.prototype.myName = function(){ document.write('Animal - ' + this.name + '<br>') } dog = new Animal("Пёсик") dog.myName() cat = new Animal("Киска") dog.myName() cat.myName() function Cars(val) { name = val; } Cars.prototype.myName = function(){ document.write('name - ' + name + '<br>') } lada = new Cars('Жигули') lada.myName() volga = new Cars('Волга') lada.myName() volga.myName() </script> [/JS] В первом случае объект при создании сохранит в своей переменной значение. А во втором случае превый экземпляр класса при создании запишет в name = жигули а при создании второго экземпляра в эту же переменную запишется значение Волга. |
|
|
people2010
|
Сообщение
#6
|
|
// Вот здесь в первой строке метод Animal - это класс? function Animal(name) { this.name = name } animal = new Animal("beastie"); Скажите, а сам this находится в оперативной памяти компа, где-то в ячейке? И в этот момент, когда конструктор вызвался, он сразу инициализировал объект animal выделив сразу и память для него и сразу сам конструктор с именем Animal стал указывать на любое свойство и метод класса Animal или сама конструкция this,которая лежит где-то в оперативной памяти компа и хранит адрес, стала хранит ссылку, а не конструктор стал хранить ссылку на любое свойство или метод класса? |
|
|
Mulder_hb |
3.3.2011, 13:13;
Ответить: Mulder_hb
Сообщение
#7
|
|
this это ссылка на текущий объект.
|
|
|
Apay |
3.3.2011, 13:37;
Ответить: Apay
Сообщение
#8
|
|
|
|
|
alexdrob |
3.3.2011, 14:00;
Ответить: alexdrob
Сообщение
#9
|
|
считай что тхис это шаблон который подменяется на имя переменной класса в котором оно выполняется.
то есть если ты вызвал функцию так dog.func() то в нутри функции func() класса Animal, переменная this будет указывать именно на экземпляр dog. А при вызове так cat.func(), this будет уже cat |
|
|
people2010
|
Сообщение
#10
|
|
this указывает на объект класса или на свойство или метод класса?
1)А где хранится this само, в чём оно находится, в интерпретаторе или в ячейке Оп памяти? 2) animal = new Animal("beastie"); После вызова конструктора, конструктор инициализировал объект и конструктор стал указывать на этот объект или this(встроенная конструкция языка джаваскрипт)?3)Вот этот код: function Animal(name) { this.name = name } Это создание конструктора или класса Javascript? |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Кто где хранит файлы? И какой объем? просто интересно |
19 | mark2013 | 1993 | 25.3.2024, 6:42 автор: Skyworker |
|
LITE.HOST - хостинг для тех, кто любит не переплачивать | 73 | akkyoh | 30444 | 24.3.2024, 18:28 автор: Kseniya_Klimova |
|
Пишет кто отзывы на сайт в янднекс с разных аккаунтах | 1 | TenDemon_rs | 1130 | 22.3.2024, 13:18 автор: writer80 |
|
Исчезающие фрилансеры после предоплаты. Зачем? Какой смысл? | 35 | metvekot | 9272 | 19.3.2024, 20:19 автор: MisterBit |
|
Кто и зачем покупает картинки обезьян по $200 тысяч? NFT |
167 | metvekot | 27099 | 6.3.2024, 21:58 автор: Boymaster |
Текстовая версия | Сейчас: 29.3.2024, 13:14 |