Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Пишут ли в таком стиле? (https://javascript.ru/forum/misc/51748-pishut-li-v-takom-stile.html)

krutoy 18.11.2014 01:42

Пишут ли в таком стиле?
 
ИМХО, очень даже неплохо получается.
defineOperation=function(the_class, name, operation){
   Object.defineProperty(the_class.prototype, name, {get: Function(operation)})
}
defineOperation(Number, "inc", "return this+1")
defineOperation(Number, "double", "return this+this")

a=1
a=a.inc.inc

alert(a) // 3
alert(2..double) // 4

Person=function(name, lastName){
this.name=name
this.lastName=lastName
}
defineOperation(Person, "fullName", "return this.name + ' ' + this.lastName")

person1=new Person("Jack", "Smith")
person2=new Person("John", "Doe")

alert(person1.fullName)
alert(person2.fullName)
//  Jack Smith
//  John Doe

Erolast 18.11.2014 05:15

А зачем operation строка, а не функция?

krutoy 18.11.2014 11:25

Для краткости.

Erolast 18.11.2014 11:42

Аха, при этом ломается подсветка синтаксиса и оптимизация.
https://developer.mozilla.org/en-US/...rrow_functions

По теме - надобность в динамическом модифицировании класса попросту не встречается на практике.

krutoy 18.11.2014 13:53

Цитата:

Сообщение от Erolast
подсветка синтаксиса

Это для школьников
Цитата:

и оптимизация.
В данном случае это не существенно.

Erolast 18.11.2014 14:54

Цитата:

Это для школьников
Не только, это для всех нормальных программистов.

Цитата:

В данном случае это не существенно.
Во-первых, несущественно, слитно, во-вторых, да, в этом примере в жалких пару строк несущественно. В реальном проекте ты бы получил тормоза.

Хотя, кому я все это рассказываю...

ruslan_mart 18.11.2014 14:56

Ещё двойные кавычки придётся экранизировать.

Erolast 18.11.2014 14:58

Еще и многострочный код геморройно будет писать.

krutoy 18.11.2014 15:57

Цитата:

Сообщение от Erolast
Хотя, кому я все это рассказываю

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

Erolast 18.11.2014 16:00

Цитата:

Откуда взяться тормозам?
https://www.google.com/search?q=java... ность

krutoy 18.11.2014 16:02

Erolast,
то есть, сам не знаешь? Я так и думал.

krutoy 18.11.2014 16:04

Erolast,
И при чем тут эвал, кстати, дебил?

Erolast 18.11.2014 16:12

Цитата:

то есть, сам не знаешь? Я так и думал.
Нет. Просто ты недостоин моего времени.

Цитата:

И при чем тут эвал, кстати, дебил?
При том, что природа проблем с оптимизацией у эвала и new Function одна и та жа.

melky 18.11.2014 16:18

krutoy, если ты про прототипы, то : http://prototypejs.org/

krutoy 18.11.2014 16:23

Erolast,
Короткий ответ: ты де
Цитата:

Сообщение от Erolast
природа проблем с оптимизацией у эвала и new Function одна и та жа.

С этого места поподробней.

Ты действительно не знаешь о чем ты п*шь, я более чем уверен в этом. Ну, ладно. Код с Function и эвал не оптимизируется допустим, и что с этого? Цикл на миллион итераций тоже долго выполняется. А рекурсивные вызова расходуют дохуя памяти. Что дебилушка, может все запретить надо?

skrudjmakdak 18.11.2014 16:39

почувствуй разницу:
console.time('one');
for (var i = 0; i < 10000; ++i) {
	eval('10 + ' + i)
}
console.timeEnd('one');

var fn = Function ('a', 'return 10 + a;');
console.time('one');
for (var i = 0; i < 10000; ++i) {
	fn(i);
}
console.timeEnd('one');

krutoy 18.11.2014 16:44

skrudjmakdak,
Это ты кому говоришь?

Erolast 18.11.2014 16:48

Цитата:

Цикл на миллион итераций тоже долго выполняется. А рекурсивные вызова расходуют дохуя памяти. Что дебилушка, может все запретить надо?
Видишь ли, нормальные программисты умеют балансировать между красотой кода и производительностью и выбирать то, что предпочтительнее в том или ином случае. Твоя задача легко решается стрелочными функциями без всякого балансирования.

krutoy 18.11.2014 16:49

skrudjmakdak,
У тебя, кстати, неверный тест. А ты там с обычной функцией обращаешься. Вот тут:
console.time('one');
for (var i = 0; i < 10000; ++i) {
    eval('10 + ' + i)
}
console.timeEnd('one');
 
console.time('one');
for (var i = 0; i < 10000; ++i) {
var fn = Function ('a', 'return 10 + a;');
    fn(i);
}
console.timeEnd('one');

уже ближе к сути. Это именно, работа оптимизации.

krutoy 18.11.2014 16:51

Erolast,
В конкретном случае решаются. но не в общем. Но мне срать на числоебство. Я не принесу удобство вущерб скорости, если это не узкое место.

skrudjmakdak 18.11.2014 16:52

нахера функцию в цикл? она выностся специально, чтобы ее один раз откомпилить и получить ссылку на готовую функцию. дабы ее потом дергать без компиляции

krutoy 18.11.2014 16:57

skrudjmakdak,
В таком случае, что ты этим хотел сказать? Эвал то ты в цикле выполняешь? Что ты голову морочишь? О чем твой тест? Что единожды откомпилированная функция быстрей чем тысячекратный вызов эвала? А то мы не знали

Erolast 18.11.2014 17:01

Цитата:

В конкретном случае решаются. но не в общем.
Чо? В каком таком не решается?
Цитата:

У тебя, кстати, неверный тест.
У тебя тоже. Мы же сравниваем скорость выполнения (new Function(arg, code)) со скоростью выполнения (function(arg){code})? Вот, пожалуйста:
console.time('one');
for (var i = 0; i < 10000; ++i) {
    (function (a){10 + a})()
}
console.timeEnd('one');

console.time('one');
for (var i = 0; i < 10000; ++i) {
   var fn = Function ('a', 'return 10 + a;');
   fn(i);
}
console.timeEnd('one');

krutoy 18.11.2014 17:04

Erolast,
Ладно, это все в такую тупость уже скатилось, что пиздец. Если бананы слаще огурцов, я теперь никогда не съем ни одного огурца, торжественно клянусь. Все, я пас, минусани меня еще разец.

Erolast 18.11.2014 17:06

Цитата:

Все, я пас,
Слил :p
Цитата:

минусани меня еще разец.
Только один раз можно(

krutoy 18.11.2014 17:15

Erolast,
Че слил? Ты весь тред сам с собой спорил. Я что, утверждал, что компиляция функции дешевле вызова? Ты бредишь? Значит ли это, что я не могу использовать это? Проникнись этим бредом поглубже. Это кислотный тред. Ты разговариваешь с тенями.

tsigel 18.11.2014 17:25

krutoy,
Ты писал что тормозов не будет, тебе доказали что они будут. Смирись и прими это достойно.
Всетаки в 10 раз медленнее - это много.

krutoy 18.11.2014 17:34

tsigel,
Я еще раз пишу для тупых. Тормоза бывают тогда, и только тогда, когда у тебя в голове вместо мозгов хуй. Смирись.

Erolast 18.11.2014 17:37

Цитата:

Ты весь тред сам с собой спорил.
Спорил? Спор подразумевает как минимум сопоставимый интеллект.

krutoy 18.11.2014 17:39

tsigel,
Ты понимаешь, блять, что function, Function, и эвал -- это совершенно разные конструкции, и предназначение у них совершенно разное? Че Вы меня парите, сравнивая хуй с пальцем. Ну сравнили, ну хуй толще оказался, дальше что? Я теперь бабам должен вместо хуя палец вставлять, по-твоей логике?

krutoy 18.11.2014 17:42

Цитата:

Сообщение от Erolast
сопоставимый интеллект

Значит, твой интелект не сопоставим с твоим же интеллектом. Бывает.

tsigel 18.11.2014 18:17

krutoy,
Ты несешь бред и ругаешься по чем зря. Не бывает что все вокруг дебилы, а ты один умный. А наоборот - бывает :)

krutoy 18.11.2014 18:20

tsigel,
Да, миллион хомячков не могут ошибаться, я в курсе.

Octane 18.11.2014 18:29

один и тот же человек

Долго держался в этот раз :D


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