javascript. Как задать прототип функции? #751014


#0 by D_Pavel
Можно конструктором через new сделать объект, прототип которого другой объект. А как сделать функцию, и задать ей прототип?
#1 by Garikk
я так понимаю вопрос про интерфейсы, насколько я знаю в js их нет P.S. в "прототип другой объект" - это вроде как наследование
#2 by D_Pavel
Ну да, наследование. Нужно чтобы было так: есть объект у которого есть свойства: obj.aaa = 10; нужно создать функцию, которая наследует эти свойства: alert (func.aaa); // выведет 10 но если написать: func, то выполнится как функция.
#3 by D_Pavel
ну или сделать объект, который сможет выполниться: obj;
#4 by ДенисЧ
#5 by Garikk
а это уже перегрузка назвается, overloading вот тут помедитировать можно
#6 by Garikk
хотя нет...
#7 by Garikk
чтото я тоже запутался
#8 by Про100Филя
нужно создать функцию, которая наследует эти свойства? Чтобы имя класса было равно имени функции?
#9 by Serginio1
#10 by D_Pavel
Без разницы какое имя у функции. Главное чтобы ее прототип равнялся моему объекту.
#11 by Гёдза
а просто имя функции = имя переменной объекта? по крайней мере в 1с такое на ура проходит
#12 by qwerty2469
Наследование на прототипах function A(obj) {     this.i = obj.i; }; A.prototype = {     constructor: A }; function B(obj) {     A.call(this, obj); }; B.prototype = Object.create(A.prototype); B.prototype.constructor = B; Основной код var b = new B({i : 1}); alert(b.i); // 1
#13 by D_Pavel
не получилось. b - не функция, а должна быть функция.
#14 by qwerty2469
var o = {i :2}; var f = function {alert;}; for(p in o) // Цикл по свой­ст­вам     f[p] = (o[p]); f; // 1 alert(f.i); //2
#15 by qwerty2469
По сути функции это тот же объект, т.е. ей можно добавлять свойства
#16 by beaver1971
function constr {         var O = {};         O = function {return O.aaa}         O.aaa = 2;         O.bbb = function(ccc) { O.aaa = ccc;};         return O;          };     var newObj1 = new constr;     var newObj2 = new constr;     newObj1.aaa = 10;     newObj2.aaa = 20;     alert(newObj1 + ":" + newObj2); // 10:20     newObj1.bbb;     newObj2.bbb;     alert(newObj1 + ":" + newObj2); // 30:40     newObj1.bbb = function(ccc) {this.aaa = ccc * 2;};     newObj1.bbb;     newObj2.bbb;     alert(newObj1 + ":" + newObj2); // 50:60 PS. функцией объект объявляем до того как начинаем "дорисовывать" свойства....
#17 by D_Pavel
Тут объект не стал прототипом функции, а только свойства скопировались. Не пойдет.
#18 by D_Pavel
А где тут установка другого объекта как прототипа этой функции?
#19 by qwerty2469
var o = {i :2}; for(p in o)     Function.prototype[p] = o[p]; var f1 = new Function('','alert'); f1; // 1 alert(f1.i); //2 Но проблема в том, что если создать f2 = new Function он будет иметь тот же прототип, что и f1.
#20 by D_Pavel
продолжу твой код: o.i = 3; alert(f1.i); //2, а не 3 Не годится. Свойства объекта скопировались в прототип функции, но не сам объект стал прототипом функции.
#21 by D_Pavel
Должно быть типа того: var o = {i :2}; var f1 = function{    alert(f1.i);    } f1.__proto__ = o; o.i = 3; f1; //3
#22 by Asmody
Так не получится. Объект, который получается из new fff не есть сама fff.
#23 by Asmody
кстати, работает в хроме.
#24 by D_Pavel
какой еще new fff ? АП!
#25 by D_Pavel
Ап
#26 by Asmody
вот ты упоротый!  посмотри, как сделано в jquery.
#27 by D_Pavel
Не груби! Если не знаешь ответ на мой вопрос, лучше ничего не пиши.
#28 by eklmn
а обязательно яваскрпт? просто на питоне легко )
#29 by Локи-13
а нафига?
#30 by Локи-13
кстати в я думаю исчерпывающий ответ
#31 by D_Pavel
Нужно именно яваскрипт. Потому что это вопрос на углубленное знание яваскрипт. Хочу научиться использовать яваскрипт на 100%. Пока могу только на 99%. Я думаю там нет исчерпывающего ответа.
#32 by Локи-13
Понятно... бьемся головой о стену, чтобы проверить прочность.
#33 by D_Pavel
Точно
#34 by Serginio1
Так задай этот вопрос на профильном форуме
#35 by Serginio1
А нам сообщишь о своих изысканиях
#36 by D_Pavel
регистрироваться еще... Нафиг надо. Мне одного форума хватает.
#37 by Serginio1
Так, что толку если ты ответ на свой вопрос не получаешь. Задавать вопросы надо там, где больше специалистов. Это форум не Вэб программистов.
#38 by D_Pavel
С чего ты взял что это форум не веб программистов? Это форум на любые темы. Посмотри какие секции тут есть. "Веб-мастеринг", например.
#39 by Serginio1
Поверь на других форумах уровень вэб программисто значительно выше. На практически можно найти все ответы на вопросы, но нужно знать английский, либо пользоваться переводчиком. Ты попробуй. Зарегистрироваться не большая проблема. И посмотри какая активнось на данном форуме по вэб мастерингу и на других
#40 by D_Pavel
Попробовал. На stackoverflow какие-то ламеры сидят. Вместо ответа на вопрос пытаются блеснуть знаниями элементарных основ яваскрипта и лайкают друг друга.
#41 by D_Pavel
Разобрался в общем. Плохо что никто не догадался. var o = {i :2}; var f1 = function{    alert(f1.i);    } //f1.__proto__ = o; Object.setPrototypeOf(f1, o); o.i = 3; f1; //3
#42 by Serginio1
По мне так значительно проще юзать TypeScript
#43 by Serginio1
#44 by D_Pavel
А мне проще юзать питон. Но это не относится к данному вопросу.
#45 by Asmody
этот метод введен только в ES6. Поддерживается не всеми браузерами. Есть пара полифилов, но и они не полностью кроссбраузерные.
#46 by Asmody
В общем, плохо все
#47 by Serginio1
В питоне есть инструменты для генерации JavaScript?
#48 by Asmody
еще как есть!
#49 by Serginio1
Я так понимаю, что у питона достаточно плохо со статической типизацией и выводом типа. Прелесть TypeScript это как раз статическая типизация вывод типа и как следствие intellisense и контроль на уровне компиляции. Чего кстати в 1С сильно не хватает.
#50 by Asmody
в питоне динамическая типизация от рождения. но это ему не мешает.
#51 by Serginio1
Многие хотят статическую типизацию Как впрочем и в 1С. В TypeScript всегда можно привести к any и работать с двойной диспетчеризацией.
#52 by Asmody
Есть полно языков со статической типизацией. Всегда есть выбор.
#53 by Serginio1
Мы сейчас говорим об типизированном JavaScript. Какой есть выбор?
#54 by Serginio1
#55 by Serginio1
#56 by Draziw
Объекты и методы(функции) это несколько разные сущности. Объект - это человек, у него есть ноги (параметры), функция у него - ходить. Ты хочешь чтобы у "ходить" были ноги. Функции не содержат параметры, так не бывает.
#57 by Serginio1
в JS можно Гибридные типы Из-за гибкой основы JavaScript возможна работа с такими объектами, которые являются комбинацией нескольких типов. С такими объектами можно работать и как с объектом и как с функцией. interface Counter {     (start: number): string;     interval: number;     reset: void; } var c: Counter; c; c.reset; c.interval = 5.0;
#58 by Рэйв
Прототип- это описание?. Ты с терминами разберись сначала
#59 by Рэйв
Описание обычно вверху с формальными параметрами
#60 by D_Pavel
Прототип - это родитель. Что именно тебе не понятно в терминах? Спрашивай более конкретно, объясню.
Тэги: Веб-мастеринг
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С