Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   this - кто он и зачем? (https://javascript.ru/forum/css-html/15527-kto-i-zachem.html)

Golovastik 02.03.2011 21:10

this - кто он и зачем?
 
Код:

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

Что означает this здесь, почему для каждого свойства и метода его нужно писать, почему без него нельзя описать свойство или метод?

Gvozd 02.03.2011 21:25

а поискать инфу, прежде чем задавать вопрос не пробовал?
http://javascript.ru/tutorial/object/thiskeyword

Golovastik 02.03.2011 21:27

this - это вообще объект или это такая же конструкция языка, как фор, или вайл?

Kolyaj 02.03.2011 22:01

Golovastik,
ответы на все ваши вопросы есть в сети в самых разнообразных вариантах. Писать здесь всё ещё раз специально для вас никто не будет.

Golovastik 03.03.2011 01:14

Читаю здесь 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 пункта из той ссылки правильно.
Заранее благодарю.

Golovastik 03.03.2011 02:00

Код:

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

Скажите, а сам this находится в оперативной памяти компа, где-то в ячейке? И в этот момент, когда конструктор вызвался, он сразу инициализировал объект animal выделив сразу и память для него и сразу сам конструктор с именем Animal стал указывать на любое свойство и метод класса Animal или сама конструкция this,которая лежит где-то в оперативной памяти компа и хранит адрес, стала хранит ссылку, а не конструктор стал хранить ссылку на любое свойство или метод класса?

Matre 03.03.2011 08:29

Golovastik

В JavaScript нет классов, откуда Вы взяли этот бред? Дайте ссылку, я лично её автору сделаю экзекуцию. Затащу в гараж, надену мешок на голову, опущу руки в кипяток и заставлю жрать собственные варёные руки!

Что касается вашего вопроса, то this может играть четыре роли: созданный объект (если перед вызовом функции используется new), объект, содержащий функцию (например, в вызове Foo.bar() this будет указывать на foo). Также он может быть подменён при помощи методов .call() и .apply() или указывать на window при простом вызове: Foo() (это частный случай п. 2).

Golovastik 04.03.2011 00:05

this указывает на объект класса или на свойство или метод класса?
1)А где хранится this само, в чём оно находится, в интерпретаторе или в ячейке Оп памяти?
2)
Код:

animal = new Animal("beastie");
После вызова конструктора, конструктор инициализировал объект и конструктор стал указывать на этот объект или this(встроенная конструкция языка джаваскрипт)?
3)Вот этот код:
Код:

function Animal(name) {
    this.name = name
}

Это создание конструктора или класса Javascript?

Golovastik 04.03.2011 01:22

То есть в зависимости от того в каком контексте зис находится он в зависимости от этого будет содержать ссылку на тот или иной именно объект, а не свойство или метод объекта?

Если я напишу так

pavel.dyrov.psix

На какой объект будет указывать ключевое слово зис.?

розовый слоник 05.03.2011 16:46

я шоке:)ну и фантазия у человека:)
извините но вы не пробовали прочитать какие либо книги по js?


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