А он и не находит если не курит ту же самую траву https://jsfiddle.net/mq6ubzem/1/
|
DivMan, прекращай фигней страдать, уже не смешно.
Функция - это подпрограмма, то есть кусок кода лежащий ВНЕ пути следования процессора. Представь себе дорогу - по ней едет телега - это процессор, а по бокам дороги деревни и села и бордели. Если не сворачивать - так и проедешь не увидав ни одной телки, а если свернуть в заведение - то окажешься внутри заведения и там будут телки. Когда ты заходишь в заведение тебя регистрируют - ДивМэн, приехал в 21:34, один, без халата. Когда выходишь из заведения - тебя снимают с регистрации: ДивМэн, 8:12, взял с собой халат. Сколько ты там поимел телок - никому кроме заведения не известно. Это и называется - подпрограмма. То есть кусок кода на адрес которого процессор посылается специальной командой, выполняет коды с этого адреса, доходит до команды возврата на трассу и возвращается на следующий после вызова подпрограммы адрес. Функция - это подпрограмма и более ничего. Это помещение со своими стенами и барахлом внутри. Это полная изоляция своего барахла от внешнего мира в своем собственном адресном пространстве. В некоторых языках так устроены не только функции, но и конструкции вроде if(), for(), где все что объявлено внутри () оказывается внутри стен помещения. То есть смотри, на дороге общего пользования проходящей мимо борделей у нас все публичное, а внутри помещений - частное, или приватное. Есть еще одна разновидность формы собственности - защищенная, это все барахло лежащее во дворе помещения, то есть не внутри и не на дороге. Но в жабе protected явно не объявляется. И вот возникает задача как-то получить частное из функции ДО завершения ее работы, в любой произвольный момент так сказать. Для этого и придумана такая форма функции как класс или его рабочая копия - объект. Когда ты внутри функции пишешь this.name = 'Вася'; то значит хочешь сделать так, чтобы можно было получить из ее значение частной переменной name, положить в грузовик и увезти по дороге в другое помещение. Не саму переменную, а ее значение, то есть груз. Все остальное - это всего лишь синтаксис и усложнение этой элементарной простоты подпрограмм, помещение которых оборудовано окнами приема-выдачи всякого барахла. Прекращай выдумывать собственную реальность и не кури траву. |
Да я реально не понимаю
|
А вот это нормальный код для калькулятора?
https://jsfiddle.net/yhvguf9o/ |
почему переменные не обнуляются, если вызвать объект несколько раз, с одинаковыми аргументами, то ответ будет разный
https://jsfiddle.net/vrbse5qg/2/ |
Если ты хочешь сделать калькулятор, который будет считать выражения вроде 3+5-(sqr(3)-lg(4))/2.56*0.001 и так далее, тебе не нужна вся эта тряхомудия классического жанра. Тебе нужен токенизатор, то есть программа, которая разбирает любое математическое выражение или форумул на токены и вычисляет токены и выдает результат. В сущности у любого парсера в том числе такого языка как жаба на фронтире токенизатор.
|
Цитата:
Попробуй разъяснить за каким членом корреспондентом ты рисуешь эти бредовые конструкции. Если объект создается по условиям, динамически, ты можешь его строить совершенно обычным образом. var Foo = function(){}; Foo.name = null; if(bar) Foo.setName=function(name){ this.name=bar+' '+name; }; else Foo.name=function(){ this.name=name; }; Все то же самое можно сделать внутри самой функции используя this, вот реальный пример if(history.pushState) this.run=function(e){ if(!e || !e.target) return; var p,el=e.target,url=el.href; if(!url) { if((el=el.closest('[data-id]')) && (p=el.querySelector('a[href]'))) url=p.href; else return; } if(el.closest('main')) le=el; stoPe(e); ajax(url,set_page); }; else this.run=function(e){ cOpen(e.target,opts.tmb_css); }; Прекращай галиматью постить, над тобой же смеются. |
Это мне надо делать, для того, что бы понять прототипы
|
Кстати я тут пропустил эти самые прототипы
Foo.setName=function(name){ - так нельзя, надо Foo.prototype.setName=function(name){ Цитата:
|
Цитата:
Прототипирование - это ниточка с бусами, ну, цепочка, оно так и называется prototype chain. Просто выделили проперть с зарезервированным именем для связи между объектами и протащились. А в классах наследование - это метафора наложения одного чертежа на другой чертеж. Ну или как в мультипликации наложение одного целлулоида на другой. |
Часовой пояс GMT +3, время: 09:06. |