Цитата:
alert(obj.foo); // 5 delete obj.foo; alert(obj.foo); // 5Определить obj. |
function Obj() {} Obj.prototype.foo = 5; var obj = new Obj; alert(obj.foo); delete obj.foo; alert(obj.foo); |
Хм... И правда...
|
Кстати, случайно пришло в голову проверить, оказывается [].toString и [].join не проверяют hasOwnProperty:
Array.prototype[0] = "O_o"; alert([,1,2]); |
Ни один метод массива не проверяет hasOwnProperty.
|
Задача #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 не переопределять :) |
весь мозг вынес.
самые разные идеи опробовал подозреваю, что мое решение не то, что ты ожидаешь увидеть, но все же 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 |
Gvozd,
Ну, коль скоро оно выполняется, то верно :) Если до завтра не поступит других вариантов, напишу мой вариант. |
Цитата:
но все же мое решение, как если бы на задачу "вывести первых 10 натуральных чисел", я бы написал alert(1); alert(2); alert(3); alert(4); alert(5); alert(6); alert(7); alert(8); alert(9); alert(10); |
#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] |
Часовой пояс GMT +3, время: 11:08. |