X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

4 страниц V   1 2 3 4 >
Открыть тему
Тема закрыта
> this - кто он и зачем?
people2010
people2010
Topic Starter сообщение 2.3.2011, 22:13; Ответить: people2010
Сообщение #1


function A ( ){
this.t = function () { alert('Hello my little friend') }
}
var a = new A();
a.t();

Что означает this здесь, почему для каждого свойства и метода его нужно писать, почему без него нельзя описать свойство или метод?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
people2010
people2010
Topic Starter сообщение 3.3.2011, 2:13; Ответить: 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
alexdrob
сообщение 3.3.2011, 2:25; Ответить: alexdrob
Сообщение #3


Почитайте о ООП вообщем, не важно на каком языке вы пытаетесь выучить ООП. Есть у некоторых языков особенности, но вам нужно выучить сам принцип ООП.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
people2010
people2010
Topic Starter сообщение 3.3.2011, 2:38; Ответить: people2010
Сообщение #4


Где почитать, чтоб понять зачем нужен this, где не читал конкретики нету зачем он и зачем его пишут для каждого свойства и метода внутри класса.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
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
people2010
Topic Starter сообщение 3.3.2011, 3:03; Ответить: people2010
Сообщение #6


// Вот здесь в первой строке метод Animal - это класс?
function Animal(name) {
    this.name = name
}
animal = new Animal("beastie");


Скажите, а сам this находится в оперативной памяти компа, где-то в ячейке? И в этот момент, когда конструктор вызвался, он сразу инициализировал объект animal выделив сразу и память для него и сразу сам конструктор с именем Animal стал указывать на любое свойство и метод класса Animal или сама конструкция this,которая лежит где-то в оперативной памяти компа и хранит адрес, стала хранит ссылку, а не конструктор стал хранить ссылку на любое свойство или метод класса?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 3.3.2011, 13:13; Ответить: Mulder_hb
Сообщение #7


this это ссылка на текущий объект.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 3.3.2011, 13:37; Ответить: Apay
Сообщение #8


(people2010 @ 3.3.2011, 05:03) *
Скажите, а сам this находится в оперативной памяти компа, где-то в ячейке?
this нигде не находится, это ссылка на текущий объект (не класс). это языковая конструкция а не переменная
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 3.3.2011, 14:00; Ответить: alexdrob
Сообщение #9


считай что тхис это шаблон который подменяется на имя переменной класса в котором оно выполняется.
то есть если ты вызвал функцию так
dog.func()
то в нутри функции func() класса Animal, переменная this будет указывать именно на экземпляр dog.
А при вызове так cat.func(), this будет уже cat
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
people2010
people2010
Topic Starter сообщение 4.3.2011, 1:05; Ответить: people2010
Сообщение #10


this указывает на объект класса или на свойство или метод класса?

1)А где хранится this само, в чём оно находится, в интерпретаторе или в ячейке Оп памяти?
2)
animal = new Animal("beastie");
После вызова конструктора, конструктор инициализировал объект и конструктор стал указывать на этот объект или this(встроенная конструкция языка джаваскрипт)?
3)Вот этот код:
function Animal(name) {
    this.name = name
}

Это создание конструктора или класса Javascript?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
4 страниц V   1 2 3 4 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Кто где хранит файлы? И какой объем?
просто интересно
19 mark2013 1984 25.3.2024, 6:42
автор: Skyworker
Горячая тема (нет новых ответов) LITE.HOST - хостинг для тех, кто любит не переплачивать
73 akkyoh 30438 24.3.2024, 18:28
автор: Kseniya_Klimova
Открытая тема (нет новых ответов) Пишет кто отзывы на сайт в янднекс с разных аккаунтах
1 TenDemon_rs 1126 22.3.2024, 13:18
автор: writer80
Горячая тема (нет новых ответов) Исчезающие фрилансеры после предоплаты. Зачем? Какой смысл?
35 metvekot 9269 19.3.2024, 20:19
автор: MisterBit
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыКто и зачем покупает картинки обезьян по $200 тысяч?
NFT
167 metvekot 27096 6.3.2024, 21:58
автор: Boymaster


 



RSS Текстовая версия Сейчас: 28.3.2024, 17:46
Дизайн