Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 30.08.2010, 15:56
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Skipp
А ещё задачки будут?
Ну например
alert(obj.foo);  // 5
delete obj.foo;
alert(obj.foo);  // 5
Определить obj.
Ответить с цитированием
  #22 (permalink)  
Старый 30.08.2010, 15:59
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

function Obj() {}
Obj.prototype.foo = 5;
var obj = new Obj;
alert(obj.foo);
delete obj.foo;
alert(obj.foo);
Ответить с цитированием
  #23 (permalink)  
Старый 30.08.2010, 16:28
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Хм... И правда...
Ответить с цитированием
  #24 (permalink)  
Старый 30.08.2010, 18:52
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Кстати, случайно пришло в голову проверить, оказывается [].toString и [].join не проверяют hasOwnProperty:

Array.prototype[0] = "O_o";
alert([,1,2]);
Ответить с цитированием
  #25 (permalink)  
Старый 30.08.2010, 18:56
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ни один метод массива не проверяет hasOwnProperty.
Ответить с цитированием
  #26 (permalink)  
Старый 04.09.2010, 16:37
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Задача #4:
Надеюсь, хоть она продержится более пары часов
foo = foo + "";
!!~eval(foo + " / -.5"); /* true */

eval(                  foo + "+" + foo                  ) /* 1 */
eval(            foo + foo + "+" + foo + foo            ) /* 2 */
eval(      foo + foo + foo + "+" + foo + foo + foo      ) /* 3 */
eval(foo + foo + foo + foo + "+" + foo + foo + foo + foo) /* 4 */
// и так далее


Чуть не забыл. eval не переопределять
Ответить с цитированием
  #27 (permalink)  
Старый 05.09.2010, 12:30
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

весь мозг вынес.
самые разные идеи опробовал
подозреваю, что мое решение не то, что ты ожидаешь увидеть, но все же
var foo=' foo=" + 0.5 " , 1 '
foo = foo + "";
alert( !!~eval(foo + " / -.5") ); // true 
alert( eval(                  foo + "+" + foo                  ) ); // 1
alert( eval(            foo + foo + "+" + foo + foo            ) ); // 2
alert( eval(      foo + foo + foo + "+" + foo + foo + foo      ) ); // 3
alert( eval(foo + foo + foo + foo + "+" + foo + foo + foo + foo) ); // 4
Ответить с цитированием
  #28 (permalink)  
Старый 05.09.2010, 13:02
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Gvozd,
Ну, коль скоро оно выполняется, то верно

Если до завтра не поступит других вариантов, напишу мой вариант.
Ответить с цитированием
  #29 (permalink)  
Старый 05.09.2010, 13:16
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от subzey
Ну, коль скоро оно выполняется, то верно
да.
но все же мое решение, как если бы на задачу "вывести первых 10 натуральных чисел", я бы написал
alert(1);
alert(2);
alert(3);
alert(4);
alert(5);
alert(6);
alert(7);
alert(8);
alert(9);
alert(10);
Ответить с цитированием
  #30 (permalink)  
Старый 06.09.2010, 10:47
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

#4: Разгадка
[spoiler]
var foo = "-~/ ";

foo = foo + "";
alert( !!~eval(foo + " / -.5") ); /* true */

alert( eval(                  foo + "+" + foo                  ) ) /* 1 */
alert( eval(            foo + foo + "+" + foo + foo            ) ) /* 2 */
alert( eval(      foo + foo + foo + "+" + foo + foo + foo      ) ) /* 3 */
alert( eval(foo + foo + foo + foo + "+" + foo + foo + foo + foo) ) /* 4 */
// и так далее

/* поясню */

!!~(-~/  / -.5);
/* тут слеш служит «закрывающей скобкой» регулярки, а минус при таком раскладе уже не унарный оператор */

-~/ +-~/;
/* тут опять регулярное выражение, причем, в него входит +. При приведении к числу оно вполне себе NaN.
-~NaN = 1 */

-~/ -~/ +-~/ -~/;
/* когда таких кусков слева и справа четное количество, плюс работает как просто плюс. В принципе, всю задачу можно было сделать и без плюса, но как не запутать мозг уважаемым js-девелоперам? :) */

[/spoiler]
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка из твиттера Kolyaj Общие вопросы Javascript 5 08.12.2009 12:01
Непростая задачка с таблицей GreatRash Элементы интерфейса 0 28.10.2009 14:14
Небольшая задачка Maksim jQuery 4 30.09.2009 19:43
задачка на подумать x-yuri Оффтопик 16 11.06.2009 12:39
Задачка: вывод div по ссылке alt5000 Элементы интерфейса 19 28.10.2008 21:21