во какая хретататень получилась :)
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, время: 02:45. |