Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Javascript - классы, они есть или их нету в Javascript? (https://javascript.ru/forum/css-html/15506-javascript-klassy-oni-est-ili-ikh-netu-v-javascript.html)

Golovastik 02.03.2011 02:44

Javascript - классы, они есть или их нету в Javascript?
 
Скажите, в Джаваскрипт есть классы как в пхп например?
Я так толкового ответа порывшись по интернету не нашёл.

Gvozd 02.03.2011 02:58

нету

monolithed 02.03.2011 09:13

Цитата:

Сообщение от Golovastik
Я так толкового ответа порывшись по интернету не нашёл.

костылей море, взять хотя бы JS.Class, да и не особо они нужны пока, в клиентском языке.
Сравните:
//ActionScript:
package {
    import flash.display.Sprite;
    public class Foo {
        public var bar:*;
        public function Foo(str) {
             this.bar = str;
        }
     }
}

var obj:String = new Foo('Hello World!');  
trace(obj.bar);

//JavaScript:
function Foo(arg) {
    this.bar = arg;
}

var obj = new Foo('Hello World!'); 
alert(obj.bar);


еще нужны классы в JavaScript? :)

Golovastik 02.03.2011 16:38

На пхп класс описуется так:
<?php
class A{
public function t(){
print("Привет мир!");
}
}
$t = new A();
$t->t();
?>


Как такое же самое только на JAVASCRIPT?

Matre 02.03.2011 16:50

В JavaScript классов нет. Некоторые дебилы говорят, что есть, и срут всем в голову своими говностатьями "наследование классов в javascript", не верьте им.

monolithed 02.03.2011 19:35

Цитата:

Сообщение от Golovastik
Как такое же самое только на JAVASCRIPT?

function Foo() {}

Foo.prototype.bar = function() {
    alert(true);
};

var obj = new Foo();
obj.bar();

рони 02.03.2011 20:55

На всякий случай ...
Цитата:

Сообщение от monolithed
alert(return true);


monolithed 02.03.2011 21:11

[quote=рони]На всякий случай ...
Цитата:

Сообщение от monolithed
Сообщение от monolithed
alert(return true);

изначально было так:
function Foo() {}

Foo.prototype.bar = function() {
    return true;
};

var obj = new Foo();
alert(obj.bar());

но из-за моей невнимательности - получилось как обычно :D

Riim 03.03.2011 10:02

Цитата:

Сообщение от Matre
В JavaScript классов нет. Некоторые дебилы говорят, что есть, и срут всем в голову своими говностатьями "наследование классов в javascript", не верьте им.

что такое "класс" для тебя? Если в каком-то ЯП будут идеальные классы со всеми тонкостями, но объявляться будут как-то хитро, без служебного слова class, значит классов нет? Для тебя все упирается только лишь в наличие служебного слова?

Matre 03.03.2011 11:48

Цитата:

Для тебя все упирается только лишь в наличие служебного слова?
Вообще-то да.

Kolyaj 03.03.2011 12:19

Совокупность конструктора и связанного с ним прототипа удобно называть классом. Просто потому, что другого слова для такой связки нет. Но, разумеется, это не те классы, что в C++/Java/PHP.

Matre 03.03.2011 12:36

Цитата:

удобно
Но неправильно.

Kolyaj 03.03.2011 14:36

Было бы другое слово, использовалось бы другое. А на безрыбье и рак рыба, хоть и неправильная рыба.

e1f 03.03.2011 15:02

Цитата:

Сообщение от Matre (Сообщение 94659)
В JavaScript классов нет. Некоторые дебилы говорят, что есть, и срут всем в голову своими говностатьями "наследование классов в javascript", не верьте им.

Ваш пост вам в ответ ;)

Matre 03.03.2011 15:04

Цитата:

Было бы другое слово, использовалось бы другое
Но его нет.

Цитата:

А на безрыбье и рак рыба, хоть и неправильная рыба
Народный фольклор здесь ну вообще не к месту.

Цитата:

Ваш пост вам в ответ
Я не говорил, что я умнее всех. Вникайте в суть вещей, а не в слова.

Riim 04.03.2011 04:05

Цитата:

Сообщение от Matre
Цитата:

Сообщение от Riim
Для тебя все упирается только лишь в наличие служебного слова?

Вообще-то да

для меня важно есть возможность или нет. В js возможность есть.

Цитата:

Сообщение от Kolyaj
Но, разумеется, это не те классы, что в C++/Java/PHP

возможно, им и не нужно быть теми же, что бы называться классами. ООП в js вообще не тот, но никто ведь не спорит, что он в js есть. Просто его называют, насколько я помню, "прототипное ООП". Так почему бы не говорить "классы в прототипном ООП"?

Matre 04.03.2011 09:56

Цитата:

для меня важно
Для меня не важно, что Вам важно.

Golovastik 04.03.2011 21:43

Ребята, так классы есть или их нету?
Скачал книгу http://www.proklondike.com/books/jav...rograming.html и на 9 странице прочитал:"
Цитата:

// Метод класса Lecture, используемый для генерации
// строки, которую можно использовать для отображения информации о лекции
" Получается классы есть в JAVASCRIPT?

Golovastik 04.03.2011 22:55

Прочитал здесь: http://ru.wikipedia.org/wiki/%D0%9F%... D%D0%B8%D0%B5

Код:

В прототип-ориентированных системах предоставляется два метода
создания нового объекта: клонирование существующего объекта,
 либо создание объекта «с нуля».

Получается написав так я объявил просто метод ТЕСТ со свойствами, но не класс?
Код:

<script type="text/javascript">
function test(){
    this.a = "Чай";
    document.write(this.a);
}

var sssr = new test;
sssr.a;
</script>

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

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

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


Golovastik 05.03.2011 01:02

А если бы я просто объявил функцию со свойствами, но не создавал бы объекта, тогда вот это:
function test(){
    this.a = "Чай";
    document.write(this.a);
}


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

Riim 05.03.2011 04:43

Цитата:

Сообщение от Matre
Для меня не важно, что Вам важно

если не готовы воспринимать чужое мнение, тогда не стоит отвечать на форумах. К нормальной дискуссии вы не готовы, а полемике здесь не место.

Цитата:

Сообщение от Golovastik
Ребята, так классы есть или их нету?

официально нет, но есть то, что как-то по-другому назвать сложно.

Matre 05.03.2011 16:18

Цитата:

если не готовы воспринимать чужое мнение
Я не готов поверить в бред, если кто-то написал, что так и есть.

Riim 06.03.2011 06:51

Цитата:

Сообщение от Matre
Я не готов поверить в бред, если кто-то написал, что так и есть.

свою точку зрения я обосновал. Каких либо аргументированных возражений к такому обоснованию ни у кого не возникло.

Matre, от тебя я, каких либо контраргументов так же не услышал, вместо этого ты только и делаешь, что обвиняешь в дибилизме и бредовости. Поведение достойное малолетнего долбаеба, но никак не специалиста, с коим мне хотелось бы иметь дело. Ты мне ничего не даешь, и как следствие бесполезен для меня.

Matre 06.03.2011 08:27

Цитата:

от тебя я, каких либо контраргументов так же не услышал
Не знаю, как Вам, но мне достаточно того, что в JavaScript нет служебного слова class.

Вам что, плохо от того, что я считаю, что в JS нет классов? Я же не навязываю Вам свою точку зрения.

Riim 06.03.2011 08:51

Цитата:

Сообщение от Matre
Вам что, плохо от того, что я считаю, что в JS нет классов?

вы слишком агрессивно считаете:
Цитата:

Сообщение от Matre
Некоторые дебилы говорят, что есть, и срут всем в голову своими говностатьями

в остальном все нормально.

Matre 06.03.2011 09:09

Могу даже вернуть свои слова назад, если Вы вернёте свои.

Riim 06.03.2011 09:12

Цитата:

Сообщение от Matre
если Вы вернёте свои

какие? Я грубил где-то без причины?

Matre 06.03.2011 09:30

У меня в репутации.
Назвали конкретно меня дебилом. Я же не писал именно про Вас, что Вы дебил.

Riim 09.03.2011 05:34

Цитата:

Сообщение от Matre
Назвали конкретно меня дебилом

у меня не было выбора :) .

Matre 09.03.2011 08:43

Цитата:

у меня не было выбора
Был. Вы могли не называть меня дебилом.

Livaanderiamarum 01.02.2012 19:55

Цитата:

Сообщение от Matre
Вообще-то да.

значит ты ебанутый еблань и хуй а мать твоя шлюха и тебе стоит подтянуть ООП

e1f 01.02.2012 20:09


Неоперативно.

trikadin 01.02.2012 20:13

e1f, вообще-то, он её и создал.

Livaanderiamarum 01.02.2012 20:46

e1f,
и? я действительно считаю что он еблан, но через 2 секунды я вспомнил что меня просили не материться и поправил сообщения пока его ни кто не прочел.

Цитата:

Сообщение от trikadin
e1f, вообще-то, он её и создал.

твой аккаунт тоже я создал, я вообще илья

Livaanderiamarum 01.02.2012 20:53

Цитата:

Сообщение от e1f
Неоперативно

Рас уж я получил предупреждение, то можно его и заслужить

Dremlin 14.02.2013 20:40

Интересно, что правы все! :)
Есть такие вещи как СИНТАКСИС и СЕМАНТИКА. Первое - правила написания, а второе - смысл.
Синтаксис является как бы технической возможностью сказать компилятору\интерпретатор , например JavaScript, что мы хотим вернуть не сами данные, а скажем, ссылку на структуру данных с определёнными параметрами, например, "кто родитель" ссылки и так далее. В итоге имеем подобие конструктора и на выходе объекта, но это если очень примитивно и грубо сказать. Другое дело, что в языке, именно в его синтаксической части нет явных способов задания классов и их типов, а так же модификаторов доступа и прочего, что впрочем, облегчает читаемость кода и наверняка облегчает процесс синтаксического разбора компилятором\интерпретато ом исходного кода программы.
Так как компьютеру, мягко сказать, до фонаря наш с вами ООП и структуры данных, которые превратятся просто в последовательность машинных инструкций, то всё зависит от точки зрения и удобства\быстроты\стиля\...
В Perl ООП это вообще что-то :) Там так же нет классов в явном виде.

tenshi 14.02.2013 23:29

ну да, в яваскрипте нет классов. а юнит тесты вообще только в языке D есть. а уж банальных синглтонов вообще нигде нет. как мы без всего этого обходимся - ума не приложу)

danik.js 15.02.2013 01:04

В JavaScript классы есть. Просто нужно подождать пока допилят документацию и их реализуют в javascript-движках :)

tenshi 15.02.2013 09:01

ты хотел сказать в ecmascript? http://es5.javascript.ru/A.html#A.6 - единственные классы, что там нашёл.

danik.js 15.02.2013 10:38

tenshi, javascript - это диалект ecmascript, так что я все правильно сказал. http://wiki.ecmascript.org/doku.php?id=harmony:classes


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