Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2012, 02:39
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Чем отличаются прототипы от классов
Я не особо разбираюсь в классах хотя и прочитал что это такое вдоль и поперек. Я читал википедию и читаю теорию ооп.
Я пришел к выводу:
Прототипы - это одна из реализаций классов. Может я тупой, а может тупые те кто говорит что в js классов нет?????

Или я не прав? Поправьте. Прототипы это и есть классы еманаврот!
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2012, 02:42
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

//это разве не класс?
function Cat(a){
this.size = a
}
//а это разве не экземпляр класса?
var cat = new Cat(4)



Нет, может я тупой? Но это же класс! Хоть убейте, но это класс кошек, который создает экземпляры! Может люди просто НЕ ЗНАЮТ?
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2012, 02:50
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Утро вечера мудренее. Может не стоит пытаться понять ООП JS в 3 часа ночи ?
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2012, 02:52
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Сообщение от Livaanderiamarum
Прототипы - это одна из реализаций классов.
Прототипное наследование - как вариант реализации наследования. Классов, формально, как таковых конструкций синтаксических в JS нет, но практически, чем конструкторы не классы для своих объектов? Только тем что нет у них такого функционала как у классов, например как в java.
Ограничение прав доступа к полям, абстрактные поля, абстрактные классы и интерфейсы, и так далее.
А в JS - функции-конструкторы объектов, работа с ними похожа на работу классическими классами o_O.

Сообщение от Livaanderiamarum Посмотреть сообщение
//это разве не класс?
function Cat(a){
this.size = a
}
//а это разве не экземпляр класса?
var cat = new Cat(4)

Если вы назовете Cat классом, то не ошибетесь если будете иметь ввиду именно то, что оно из себя представляет
__________________
readOnly
Ответить с цитированием
  #5 (permalink)  
Старый 01.02.2012, 02:54
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Сообщение от melky
3 часа ночи

Да, пора. Туда. В 7 вставать
__________________
readOnly
Ответить с цитированием
  #6 (permalink)  
Старый 01.02.2012, 09:09
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от poorking
Ограничение прав доступа к полям, абстрактные поля, абстрактные классы и интерфейсы, и так далее.
Ясно, не представляю где это может пригодится. Замыкания же есть чтобы делать приватные переменные, или это костыль типа, а там для этого специальный синтаксис есть?
Ответить с цитированием
  #7 (permalink)  
Старый 01.02.2012, 10:45
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Livaanderiamarum,
Э то не костыль, а так сказать подражание программированию классами, да можно сделать приватные, статические, приватные статические классы и методы.
function Class() {
	Class.prototype.init.apply(this, arguments)
}

Class.prototype = new function (Class) {
	
	//	private (Вызывается в контексте инстанса)
	function privateMethod () {
	
	}
	
	//	public
	this.init = function () {
		privateMethod.call(this);
	}
	
	//	public static
	Class.staticMethod = function () {
		privateStatic();
	}
	
	//	независим от контекста
	function privateStatic () {
	
	}
	

}(Class);


А в java да, там для этого специальные конструкции

class Class() {
	
	
	public void init () {}
	
	private void privateMethod () {}
	
	public static void staticMethod() {}
	
	private static void privateStatic(){}
}
__________________
readOnly
Ответить с цитированием
  #8 (permalink)  
Старый 01.02.2012, 14:43
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Livaanderiamarum, Синтаксические конструкции в разных языках называются по разному. Внимательно прочтите определение класса, нигде не говорится об обязательном присутствии ключевого слова class.
Ответить с цитированием
  #9 (permalink)  
Старый 01.02.2012, 17:32
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

monolithed,
Сообщение от monolithed
Внимательно прочтите определение класса(ссылка на википедию), нигде не говорится об обязательном присутствии ключевого слова class.

Сообщение от Livaanderiamarum
Я читал википедию и читаю теорию ооп.
Я пришел к выводу:
Прототипы - это одна из реализаций классов. Может я тупой, а может тупые те кто говорит что в js классов нет?????
Или я не прав? Поправьте. Прототипы это и есть классы еманаврот!

тред не читай @ сразу отвечай

Последний раз редактировалось Livaanderiamarum, 01.02.2012 в 17:36.
Ответить с цитированием
  #10 (permalink)  
Старый 01.02.2012, 17:42
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Livaanderiamarum Посмотреть сообщение
Зачем нужны приватные методы? Зачем мне пытаться от себя что-то скрыть?
Зачем здесь var?

var a = 10;

function F() {
    var a = 20; // зачем здесь var?
}
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает в FF и опера, но работает в IE(в чем дело???) Cepera Firefox/Mozilla 1 24.08.2012 16:46
Прототипы лучше классов? Livaanderiamarum Общие вопросы Javascript 60 29.12.2011 02:31
Чем отличаются 2 вызова? wwwboy jQuery 4 07.12.2011 23:47
Чем отличаются объекты HTMLCollection и NodeList? Cooskon Events/DOM/Window 4 12.09.2010 18:32