Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

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

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: cheops   (06.03.2011 в 14:51)   письмо автору
 
   для: Tonik992   (05.03.2011 в 17:20)
 

>http://www.cyberforum.ru/cpp-beginners/thread86260.html
>вот почитай.. а вообще тег для поиска "c++ указатель this"
this изначально пошел из C++. Но this в С++ и JavaScript отличаются, эту мысль и пытается донести Абырвалг. Объектные модели отличаются, поэтому есть различия. Если в C++ без воли программиста ни один объект не рождается, но в JavaScript они только так и рождаются.

  Ответить  
 
 автор: kvins   (05.03.2011 в 20:41)   письмо автору
 
   для: Tonik992   (05.03.2011 в 17:20)
 

не когда бы не подумал что так сложно обьяснить что означает this. =)
автор не много отдохни а потом прочитай ниже

например ты создал function (wer) и когда ты внутри всякое описываешь то когда тебе надо будет сослатся на саму функцию тебе нужно использовать this

и тоже самое в jquery когда выбираешь обьект и тебе надо сним что то делать то используется this
ну переведи с английского слово this и включи логику >_< а как его правильно называть это не имеет значения

ъ
а вот прочитал пост Абырвалг все тоже самое

  Ответить  
 
 автор: Tonik992   (05.03.2011 в 17:20)   письмо автору
 
   для: Golovastik   (02.03.2011 в 21:14)
 

http://www.cyberforum.ru/cpp-beginners/thread86260.html
вот почитай.. а вообще тег для поиска "c++ указатель this"

  Ответить  
 
 автор: Абырвалг   (05.03.2011 в 10:21)   письмо автору
 
   для: Golovastik   (05.03.2011 в 01:51)
 

Нет, этот код - всего лишь создание объекта test.
Он, этот объект test, пока лишь мальчик.
Но, как и всякая особь мужского рода, этот мальчик имеет первичные половые признаки, сиречь видимую потенциальную способность в будущем стать ПАПОЙ-конструктором.

Если Вы позже с помощью test создадите новый объект, то этот самый test станет конструктором - мальчик вырос и стал ПАПОЙ, родив нового мальчика.

  Ответить  
 
 автор: Golovastik   (05.03.2011 в 01:51)   письмо автору
 
   для: Абырвалг   (05.03.2011 в 01:11)
 


function test(){ 
    this.a = "Чай"; 
    document.write(this.a); 



Этот код - это описание конструктора test и одновременное его создание?

  Ответить  
 
 автор: Абырвалг   (05.03.2011 в 01:11)   письмо автору
 
   для: Golovastik   (05.03.2011 в 00:07)
 

Кто-то из гитлеровских приспешников, по-моему - Геббельс, говорил: "Когда я слышу слово интеллигент, моя рука тянется к спусковому крючку автомата".

Я сейчас вот ТОЧНО ТАКЖЕ хочу Вас... ну хотя бы чем-нить сильно ударить.
После того, как я Вам здесь десять раз написал, САМЫМИ БОЛЬШИМИ буквами написал - "НЕТУ методов в JS", Вы меня спрашиваете: "Значит объявление метода со свойствами - это описание конструктора?"

Так и хочется спросить словами незабвенного Паниковского: "МЕТОД - он Вам кто? Он Ваш папа - этот МЕТОД?"
------------

Любое объявление/создание любого нового объекта в JS происходит с использованием конструктора.
Либо встроенного, либо Вами созданного.

Пример:
var s1 = new String ('строка'); //Создаём объект типа String
alert (s1.constructor); //Получаем название конструктора, при помощи которого этот объект создан - function String

s1.alfa = 125; //У этой строки (именно потому, что она создана как ОБЪЕКТ) могут быть свойства.
//Причём, как видите, свойства могут быть и не строковыми, а численными (да какими угодно, хоть другой объект)

alert (s1.alfa); //проверяете свойство alfa у объекта s1

s1.beta = new Array (); //Пример "объекта объекта": свойство beta объекта s1 - это массив (тоже ОБЪЕКТ);
alert (s1.beta.constructor); //Раз это ОБЪЕКТ объекта, то у него при создании был конструктор - function Array

var s2 = 'тоже строка'; //Создали просто строку, как переменную, не как объект
s2.gamma = 123; //Попытались назначить переменной s2 свойство gamma
alert (s2.gamma); //Читаете свойство gamma - а там undefined. Ибо у переменных не бывает свойств.

function test () {} //Создаете объект test
alert (test.constructor); //Вот вам конструктор, который создал объект test - function Function

var sssr = new test; //Клонируете объект test, создавая новый объект sssr
alert (sssr.constructor); //Вот вам конструктор, который создал объект sssr - это Вами лично созданный ранее конструктор function test

  Ответить  
 
 автор: Golovastik   (05.03.2011 в 00:07)   письмо автору
 
   для: Абырвалг   (04.03.2011 в 23:49)
 

1)То есть написав функцию, а внутри неё свойства - это равносильно что я создал объект с именем ТЕСТ а в нём свойства.
2)Я понял что ссср это новый объект, вы где-то выше писали что свойство объекта, тоже становится объектом это правда?

3)Значит объявление метода со свойствами - это описание конструктора?
Вот это я описал конструктор?


function test(){
this.a = "Чай";
document.write(this.a);
}

А если бы я просто объявил функцию со свойствами, но не создавал бы объекта, тогда вот это:

function test(){
    this.a = "Чай";
    document.write(this.a);
}


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

  Ответить  
 
 автор: Абырвалг   (04.03.2011 в 23:49)   письмо автору
 
   для: Golovastik   (04.03.2011 в 23:28)
 

Уточняю.
function test ()   //Это создание объекта test
{
this.abc = 'Чай'; //Это создание свойства abc объекта test


var sssr = new test; //Это создание НОВОГО объекта sssr, наследующего все свойства объекта test

alert (sssr.abc); //И здесь Вы убеждаетесь, что свойства объекта test унаследованы

sssr.def = 'Кофе'; //Это создание свойства def у объекта sssr

alert (sssr.def); //Проверяете новое свойство def у объекта sssr

alert (test.def); //А здесь, увидев пустоту, Вы убеждаетесь, что sssr - это таки НОВЫЙ объект

  Ответить  
 
 автор: Golovastik   (04.03.2011 в 23:28)   письмо автору
 
   для: Абырвалг   (04.03.2011 в 23:04)
 

Здесь уточнить момент хотел.

<script type="text/javascript">
function test(){  //Это создание метода с именем ТЕСТ, тоже самое что я создал объект ТЕСТ?
    this.a = "Чай"; 
    document.write(this.a);
}

/*Если свойство объекта - это тоже объект, получается "объект объекта".*/
//То есть sssr.a    свойство а - это объект?
var sssr = new test;
sssr.a;
</script>

  Ответить  
 
 автор: Абырвалг   (04.03.2011 в 23:04)   письмо автору
 
   для: Golovastik   (04.03.2011 в 22:58)
 

Опять двадцать пять.
Опять - "класс это или не класс?", "создан метод или не метод?"

НЕТУ классов. НЕТУ методов.
СОВСЕМ НЕТУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУ!
Ни одного класса. Ни одного метода.

И встроенных нет.
И создать их НЕЛЬЗЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ!
------

Функция - это один из имеющихся в JS объектов.
Всякий объект может иметь свойства. Вы их можете создать.
Но только - СВОЙСТВА.
Не методы и не классы, а именно и только - СВОЙСТВА.

Если свойство объекта - это тоже объект, получается "объект объекта".
Что непонятного-то?:-)))

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-23] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования