Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.04.2012, 02:54
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Maxmaxmахimus
в чем отличия, прошу пример.
возьми свой пример и в конце кода напиши:
alert( q.__private ); // увидишь 'text'
а нужно видеть undefined
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #12 (permalink)  
Старый 02.04.2012, 03:14
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

deleted
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 02.04.2012 в 16:27.
Ответить с цитированием
  #13 (permalink)  
Старый 02.04.2012, 03:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Maxmaxmахimus
devote, оч интересно, я посмотрю завтра, а зачем тебе видеть undefined запрашивая доступ к приватному свойству?
это единственный недостаток подхода с подчеркиваниями? отсутствие генерации undefined?
Это большой недостаток прототипного наследования, который не создает новый экземпляр а юзает старый, просто с иным контекстом... Конечно это облегчает язык в целом, как в обучении так и построении быстрых решений. Так же как отметили выше не жрет память, но с таким подходом сложно писать что-то реально крупное и полноценное. Я не говорю что JavaScript плох, мне он конечно не особо привычен, но жить можно. Я привык к ООП и там все предсказуемо, но тут увы не предскажешь чей ты контекст получишь.
Сообщение от Maxmaxmахimus
а зачем тебе видеть undefined запрашивая доступ к приватному свойству?
что бы другой прогер их не задел или не перекрыл. Или я сам же, забыв о том что где-то что-то подобное объявил.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #14 (permalink)  
Старый 02.04.2012, 03:39
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Maxmaxmахimus
ты вегда получаешь контекст того относительно чего вызываешь.
ну когда я вызываю я вкурсе какой я передаю контекст, но я не буду в курсе когда вызывать буду не я... то-есть я пишу библу а юзает кто-то другой.. тут уж я не всевидящий что бы узнать что передает тот кто вызывал функцию/метод тот что я писал. В этом плане в ООП я точно могу указать каков объект(ы) я кочу видеть в качестве экземпляра.
Сообщение от Maxmaxmахimus
но ведь общепринято что 2 черточки вначале это означает приватность, так же как и название конструкторов с большой буквы.
Ну я рад за тех кто это ввел себе в голову общепринятым.. но опять же повторюсь... есть один прогер, написал некий класс, создал в ней приватную переменную __blah. Все хорошо все гуд, но тут я беру его библу и юзаю его классы, потом расширяю его классы своими, и тоже создаю переменную с таким же именем __blah, что в результате произойдет перекрытие его переменной и вызовет конфликт.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #15 (permalink)  
Старый 02.04.2012, 03:51
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

вот пример:
кто-то написал библу.. допустим ты написал библиотеку, очень удобную и т.д. вот типо часть ее кода:
function YouMethod() {
    this.__private = [];
    this.blah = function() {
        this.__private.join( "\n" );
    }
}
В итоге я беру твою либу, допустим минифицированую, понятно дело что в коде я без пива не пойму. Ну тоесть код то сжат. Ну подумаю все чики и начну дописывать свое к ней:
function YouMethod(){this.__private = [];this.blah=function(){this.__private.join( "\n" );}}

function MyMethod() {
    this.__private = {}; // я решил назвать так приватную, но не знал что у теб она тоже так называется. И имеет другой тип.
    this.tata = function(){}
}
MyMethod.prototype = new YouMethod();
var lala = new MyMethod();
lala.blah(); // вызовет ошибку
В итоге происходит конфликт, твоя функция думает что там в качестве приватной лежит массив, но так как я назвал свою переменную тоже так же как и ты, то теперь эта переменная имеет тип объекта и твоя функция вызовет ошибку обратившись к приватной переменной. Это и называется перекрытие, конфликт.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #16 (permalink)  
Старый 02.04.2012, 09:05
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Maxmaxmахimus Посмотреть сообщение
я думаю энциклопедию в таком стиле написать))) типа вики. где есть краткая формулировка (при наведении на слово) и развернутая статья, при клике по слову(ну это как в вики). только в одно рыло не смогу
запили книжку на юкозе, попутно запилив красивый responsive дизайн с нуля.
Ответить с цитированием
  #17 (permalink)  
Старый 02.04.2012, 14:36
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Maxmaxmахimus,
что то ты многовато написал, какой то чуши... без обид, но не нужно мне объяснять что такое прототипы, что такое классы а что такое ООП. Поверь я знаю что это такое.. Вся речь лишь началась с того что прототипы в отличии от классов полный порожняк.

И не надо мне рассказывать где тут моя/твоя переменная... ты даже вникнуть не можешь в то, о чем я тебе говорю, и начинаешь потом писать непонятно что. Тебе нужно поучить программирование на классах, то-есть ООП и тогда ты поймешь о чем я говорю и что я имею вииду.

А зная лишь один JavaScript ты никогда не поймешь того в чем различается ООП от того что умеет JS.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #18 (permalink)  
Старый 02.04.2012, 15:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Maxmaxmахimus,
ну вот видишь, ты снова меня не понял.. я не кричу о том что в JS это невозможно, речь идет о прототипах а не о языке в целом. Я в курсе что на JS можно хорошо писать при желании. Снова повторюсь, речь идет о прототипах. Тоесть сравнение классового наследования с прототипным наследованием. А не о языках и ООП в целом.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #19 (permalink)  
Старый 02.04.2012, 16:13
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Maxmaxmахimus,
ладно я устал с тобой спорить и пытаться объяснить в чем различие настоящего полноценного ООП от Прототипного Программирования, который лишь пытается сделать вид что он полноценный ООП язык, потому как имеет возможность работать с сущностями объектов и имеет наследование. Но это не говорит о его полноценности, умение наследовать не дает языку понятия ООП. Умение работать с объектами как с сущностями не дает языку понятие ООП. Я не говорю что ООП это классы, ООП это умение делать все то и в полной мере что я описал выше, а основное отличие и важность уметь инкапсулировать. И помимо этого другие вещи. Прототипное программирование это лишь некий подтип объектного программирования. Но не полноценный, о чем я и пытаюсь втолковать.

Все на этом разговор считаю дальше нет смысла продолжать.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Общие вопросы Javascript 1 13.04.2011 22:09
если (свойство css == 2) свойство css = 1; funkypublic Events/DOM/Window 1 09.06.2010 17:39
Prototype v1.4.0 and Prototype v1.5.1_rc3 prihod Prototype & script.aculo.us 2 02.10.2008 16:08
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56