Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как граматно создать конструктор (https://javascript.ru/forum/misc/52088-kak-gramatno-sozdat-konstruktor.html)

krutoy 03.12.2014 19:43

Цитата:

Сообщение от danik.js
tsigel, уверен что это правильно будет работать?

Это вот так делается
Class=function(private){
   var f=function(){}
   f.prototype.setPrivate=function(value){private=value}
   f.prototype.getPrivate=function(){return private}
   return new f
}

o1=Class(1)
o2=Class(10)
o2.setPrivate(100)
alert(o1.getPrivate())
alert(o2.getPrivate())

И это основы, тащемта.

danik.js 03.12.2014 19:54

Ну то ест нормально - никак. Ну я так и сказал. Мог бы и не распинаться тут :(

krutoy 03.12.2014 19:55

Цитата:

Сообщение от danik.js
Ну то ест нормально - никак

Скажи, что значит "нормально", я не понимаю.

jsnb 03.12.2014 19:55

Цитата:

Сообщение от danik.js
Как? Чтобы у методов был к ним доступ.

А, да, сорри. С прототипами замыкания не прокатят.

krutoy 03.12.2014 19:57

Цитата:

Сообщение от jsnb
С прототипами замыкания не прокатят.

Все там прокатит. Опиши задачу, и я сделаю.

danik.js 03.12.2014 19:58

Все твои примеры годятся только на хелло ворлд

krutoy 03.12.2014 20:01

Цитата:

Сообщение от danik.js
годятся только на хелло ворлд

Они годятся на что угодно. Я смотрю, ты замыкания н осилил, поэтому и ноешь.

danik.js 03.12.2014 20:05

Наследование. Instanceof. Работоспособность оптимизаций js движков. Пока все. Жду

krutoy 03.12.2014 22:03

danik.js,
В такой вот, простой реализации тебя что не устраивает?
Class=function(){
   var private
   this.get=function(){alert(private)}
   this.set=function(newValue){private=newValue}
}

o1 = new Class
o2 = new Class

o1.set(1)
o2.set(10)
o1.get()
o2.get()

? То что каждый экземпляр имеет свои собственные методы? За память беспокоишься? Не думаю, что в большинстве случаев это будет иметь значение. Память нынче дешевая.
Что касается оптимизаций, то тут как раз наоборот. Движок любит лексические замыкания, там ссылочная прозрачность. Статика ё-ная.

nerv_ 03.12.2014 23:14

Цитата:

Сообщение от tsigel
К тому же я пишу на TypeScript

забавно, но именно на TS я так писал :)
https://yadi.sk/i/xZaFpF6cd8fqN

Сейчас не могу тебе сказать зачем оно нужно, в проекте несколько человек. Но эту часть с js на ts переписывал именно я)


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