во какая хретататень получилась :)
Function.prototype.toString = function() { return this(); } var greeting = function() { return "hello"; } alert( greeting + "!" ); ЗЫ. Автор не я! В твитере Ben Alman написал |
Ичо?
|
Цитата:
|
Тем не менее.
Что интересного в этом коде, по вашему мнению, что вы его тут опубликовали? ну, кроме того, что он выдаст ошибку на первой же функции возвращающей объект, например? |
devote, ну вот блин, отобрал у меня 30 минут жизни. Из кодобреда придумал еще вот:
Number.prototype.toString = function(){alert('getter'); return this;} alert(new Number(1));Только я вот не понимаю, почему не работает с атомарными типами. Number.prototype.valueOf = function(){alert('getter'); return this;} alert(new Number(1) + 3);Вот еще немножечко бреда. |
Цитата:
|
Цитата:
Function.prototype.toString = function() { return this(); } var greeting = function() { return this; } alert(greeting.prototype.constructor()); |
Цитата:
|
Цитата:
то что ошибку выдаст я и так в курсе. |
А ещё можно вот так написать:
Function.prototype.constructor.toString = function() { return this(); } var greeting = function() { return "hello"; } alert( greeting + "!" ); В этом коде тоже много букав ;) |
window.onload = function(){ var iframe = document.createElement('iframe'); iframe.src = 'javascript: true'; //ie init frame document.body.appendChild(iframe); iframe.onreadystatechange = function(){ if(iframe.readyState == 'complete'){ var F = iframe.contentWindow.Function F.prototype.valueOf = function(){ return this(); } var myObj = { one: new F('return 1;') } alert(myObj.one + 2); } } } Ну вот грубо говоря это нужно для создания геттеров в ИЕ :) Just for fun пойдёт. |
Nekromancer, это круто.
|
Цитата:
|
Цитата:
|
Цитата:
|
B~Vladi,
Там вроде как только для объектов созданных из vb классов. Но вообще да. Просто уже к существующему объекту не присвоишь геттер. |
Nekromancer, еще бы сеттеры туда. Я вот недавно долбался с реализацией dataset для IE, но нифига не вышло.
|
Цитата:
|
FINoM,
в ие 8 можно сделать. B~Vladi, Ну вот, как альтернатива для самых изощрённых - подход с valueOf пойдёт. |
Цитата:
|
Цитата:
// код }). |
Цитата:
|
Цитата:
|
FINoM,
Не работает только для document, window так как их не может быть в документе и им не присваивается behavior. Как только поведение присвоено, можно вешать proeprtychange (Для этого надо либо дождаться readyState == 'complete' при addBehavior('#default') - асинхронное добавление. Либо засунуть элемент в dom, как сказали выше. То есть он должен стать частью дерева. Тогда можно его вытаскивать и крутить как захочешь). Но в таком случает можно и в ие 7 сделать. Но тут нужны сеттеры, по этому 8ой и defineProperty. |
Цитата:
|
devote,
Не, оно вызывается там, да и в window вроде как тоже только для тех свойств, которое присвоил как раз браузер (окружение). Дальше можно поменять onclick - и событие сработает. Вроде так. |
Часовой пояс GMT +3, время: 08:14. |