Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
function isProperty(object, property) {
"use strict";
var p, names, original = object,
ecmaTypes = [Object, Array, String, Number, Date];
try {
for (p = 0; p < ecmaTypes.length; p += 1) {
if (ecmaTypes[p] == object) {
console.log("looking up: " + ecmaTypes[p]);
names = Object.getOwnPropertyNames(ecmaTypes[p]);
if ('prototype' in ecmaTypes[p]) {
names = names.concat(
Object.getOwnPropertyNames(
ecmaTypes[p].prototype));
}
break;
}
}
do {
object = object.prototype.__proto__.constructor;
names = names ?
names.concat(Object.getOwnPropertyNames(object)) : [];
if ('prototype' in object) {
names = names.concat(
Object.getOwnPropertyNames(object.prototype))
}
} while (object != Object)
if (!names) {
names = Object.getOwnPropertyNames(object);
}
} catch (error) {
for (p in object) {
if (object[p] == property) {
return true;
}
}
return false
}
for (p = 0; p < names.length; p += 1) {
if (original[names[p]] == property ||
original.prototype[names[p]] == property) {
return true;
}
}
return false;
}
А как еще узнать, является ли функция методом принадлежащим объекту или нет? Это еще после трех часов проведенных в муках пытаясь понять, что вообще происходит.
Нет, тут проверяется что, например "x".toString == String.prototype.toString. Т.е. нам нужно узнать что какая-то функция является методом объекта, у нас нет "имени" этой функции.
В ES3 достаточно было просто перебрать все ключи объекта и сравнить, типа:
for (var i in o.constructor.prototype) {
if (o[i] == f) // да, это наша функция
}
А еще жабоскрипт собираются улучшить и разнообразить всякой замечательной херней типа "понимание массивов", генераторы и т.п. Чтобы немного усложнить понимание кода, и таким образом создать видимость более основательного подхода к языку.
Так как бы от их наличия или отсутствия ничего не зависит. А то, что не только баги не правят, а еще и портят то, что нормально работало - не может не радовать.
Всякие фокусы типа тут сэкономить одну букву, там две - ни на что абсолютно не влияют, и только в целом ухудшают то самое "понимание", т.как приводят к тому, что есть несколько способов сделать одно и то же, и, как результат, нужно заучивать больше ненужной херни. Но как в небезызвестном "интервью" со Страуструпом - чем херовее язык (чем тяжелее запомнить все возможные извращения в грамматике), тем больше шансов на элитарность.
А Б. Ейк - идиот тот еще. Его просто лучше не читать и не обращать внимания. А еще лучше - не использовать Яваскрипт вообще 🙂
Меня заципила одна фраза:
> "I think we should look for elegance in the applications built, rather than in the languages themselves"
Этот совет Страуструп посвятил бы @LispGovno. Красоту следует искать не в языках, а в дизайне приложений.
Мне это напоминает ситуацию с музыкой: есть довольно много форм и музыкальных приёмов (модуляции, синкопы, нюансы, смены размеров, полифония, тысячи их). Но это не значит, что хотя бы одним из них можно украсить произведение мастера. Просто собрав их всё вместе, не получить шедевра.
Базовые приёмы и умелая рука мастера способны на гораздо бОльшие свершения, чем школьник с миллионом свистелкоперделок.
> Красоту следует искать не в языках, а в дизайне приложений.
Ну не все так просто. Некоторые языки из-за своего убогого дизайна просто сподвигают программистов писать говно...
Дай дураку суперкомпьютер 15-летней давности. У многих дома стоит сопоставимое железо.
Но он не родит ничего хорошего - как обезьяна с печатной машинкой.
Максимум на что он способен - лазить вконтакте и мейлру, смотреть камеди клаб и наркомана павлика, слушать гуфа и ак-47.
Толковые люди даже минималистичными, ограниченными средствами добиваются больше, чем бездари с технологиями и железом.
Вот пример: шахматы на 1К от Оскара Толедо.
Гумно на хацкиле такого в жизни не сделает, потому что основной инструмент тут не язык, не процессор, а как ни странно голова.
В ES3 достаточно было просто перебрать все ключи объекта и сравнить, типа:
А теперь вот улучшили.
Это что за Perl такой?
У меня еще где-то должен лежать старый диск с Prompt'ом
вот тебе не нужны генераторы и list comprehensions, а мне очень нужны, лично я с нетерпением жду ECMAScript6.
Я за функциональщину в JS.
http://brendaneich.github.com/Strange-Loop-2012/
Всякие фокусы типа тут сэкономить одну букву, там две - ни на что абсолютно не влияют, и только в целом ухудшают то самое "понимание", т.как приводят к тому, что есть несколько способов сделать одно и то же, и, как результат, нужно заучивать больше ненужной херни. Но как в небезызвестном "интервью" со Страуструпом - чем херовее язык (чем тяжелее запомнить все возможные извращения в грамматике), тем больше шансов на элитарность.
А Б. Ейк - идиот тот еще. Его просто лучше не читать и не обращать внимания. А еще лучше - не использовать Яваскрипт вообще 🙂
Когда это у нас c++ успел стать илитарным
> Java: write once, run away!
> Java is a DSL to transform big XML documents into long exception stack traces.
я плакал
Самая суть. Просто в точку.
Кстати, по поводу элитарности:
http://pichub.ru/pic_b/12/10/11/ff807482be639cd171b6de1f299c79bd.jpg
По сравнению с жабой - божественные языки.
The definition of Hell is working with dates in Java, JDBC, and Oracle.
wvxvw
Спасибо. Я джва года ждал такой сайт где весело поливают говном всех и вся.
http://wiki.theory.org/YourLanguageSucks
Но harmful.cat-v.org как-то душевней.
http://www.stroustrup.com/bs_faq.html#really-say-that (под заголовком "Did you really give an interview to IEEE?")
Вот настоящее интервью:
http://www.stroustrup.com/ieee_interview.html
> "I think we should look for elegance in the applications built, rather than in the languages themselves"
Этот совет Страуструп посвятил бы @LispGovno. Красоту следует искать не в языках, а в дизайне приложений.
Мне это напоминает ситуацию с музыкой: есть довольно много форм и музыкальных приёмов (модуляции, синкопы, нюансы, смены размеров, полифония, тысячи их). Но это не значит, что хотя бы одним из них можно украсить произведение мастера. Просто собрав их всё вместе, не получить шедевра.
Базовые приёмы и умелая рука мастера способны на гораздо бОльшие свершения, чем школьник с миллионом свистелкоперделок.
Цып-цып-цып, цыплятки.
> Красоту следует искать не в языках, а в дизайне приложений.
Ну не все так просто. Некоторые языки из-за своего убогого дизайна просто сподвигают программистов писать говно...
Но он не родит ничего хорошего - как обезьяна с печатной машинкой.
Максимум на что он способен - лазить вконтакте и мейлру, смотреть камеди клаб и наркомана павлика, слушать гуфа и ак-47.
Вот пример: шахматы на 1К от Оскара Толедо.
Гумно на хацкиле такого в жизни не сделает, потому что основной инструмент тут не язык, не процессор, а как ни странно голова.
Думаю, что не посвятил бы
Я только за. Но более использовать то нечего Vbscript не в счет.