Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / FF Function.caller && Arguments / 12 сообщений из 12, страница 1 из 1
28.05.2012, 16:36:35
    #37814780
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
Что-то не могу догнать в чем прЫкол: если юзать arguments (за'rem'ленная строка) - все сухо. Стоит же только заюзать args в FF this.callOverridden.caller === null (Google Chrome, Opera, M$ IE - все сухо).
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
<!doctype html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Test Override</title>
		<script>
function OnLoad()
{
	var
		o = {
			foo: function() {
				if(window.console && console.log)
					console.log("foo(%o) (original)", arguments);

				return arguments;
			},

			callOverridden: function(args) {
				return this.callOverridden.caller.$previous.apply(this, args); // Doesn't work in FF (this.callOverridden.caller === null)
				//return this.callOverridden.caller.$previous.apply(this, arguments);
			},

			override: function(overrides) {
				for(f in overrides)
					if(typeof this[f] === "function")
					{
						overrides[f].$previous = this[f];
						this[f] = overrides[f];
					}
			}
		};

	o.override({
		foo: function() {
			if(window.console && console.log)
				console.log("foo(%o) (b4 original)", arguments);

			this.callOverridden(arguments);

			if(window.console && console.log)
				console.log("foo(%o) (after original)", arguments);
		}
	});

	o.foo(1, 2, 3);
}
		</script>
	</head>
	<body onload="OnLoad()">
	</body>
</html>


Это что-то у меня или так мне и надо?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
28.05.2012, 16:56:53
    #37814817
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
это настолько офигенно, что у меня даже нет этому объяснения что интересно, в экст, с которого ты выдирал код судя по всему, не валится в ФФ, хотя код идентичен.
стоит добавить просто строчку "arguments;" в функцию, как оно заработает. Похоже на какой-то загон последнего файрфокса
...
Рейтинг: 0 / 0
28.05.2012, 17:07:17
    #37814834
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
зыстоит добавить просто строчку "arguments;" в функцию, как оно заработает. Похоже на какой-то загон последнего файрфоксаага.
Код: javascript
1.
2.
var a = arguments;
return this.callOverridden.caller.$previous.apply(this, args); //work!!



видимо, в FF arguments - это свойство, при вызове которого caller появляется
...
Рейтинг: 0 / 0
28.05.2012, 18:04:04
    #37815008
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
arguments
THNX

Похоже в связи с тем, что это они изъять-то arguments.caller - изъяли, а Function.caller на ноги полностью самостоятельно так и не поставили...
...
Рейтинг: 0 / 0
28.05.2012, 20:23:00
    #37815241
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
так странно жеж что последний Ext про это не знает и вроде как не падает

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
        callParent: function(args) {
            var method;

            
            return (method = this.callParent.caller) && (method.$previous ||
                  ((method = method.$owner ? method : method.caller) &&
                        method.$owner.superclass.$class[method.$name])).apply(this, args || noArgs);
        },
...
Рейтинг: 0 / 0
28.05.2012, 22:02:29
    #37815358
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
> так странно жеж что последний Ext про это не знает и вроде как не падает
Дык отож...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.05.2012, 22:57:47
    #37815397
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
значит где-то ещё есть "волшебный триггер"
...
Рейтинг: 0 / 0
29.05.2012, 10:16:48
    #37815768
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
/me думает: и куды ж они его могли засунуть-то?..
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<!doctype html>
<html>
	<head>
		<meta charset="utf-8"/>
		<title>Test Override</title>
		<script charset="utf-8" src="http://dev.sencha.com/deploy/ext-4.0.7-gpl/ext-all-debug.js"></script>
		<!-- <script charset="utf-8" src="http://dev.sencha.com/deploy/ext-4.1.0-gpl/ext-all-debug.js"></script> -->
		<script>
Ext.Loader.setConfig({
    enabled: true,
    disableCaching: false
});

Ext.define("A", {
	foo: function() {
		if(window.console && console.log)
			console.log("foo(%o) (original)", arguments);
	}
});

A.override({
	foo: function() {
		if(window.console && console.log)
			console.log("foo(%o) (b4 original)", arguments);

		this.callOverridden(arguments);

		if(window.console && console.log)
			console.log("foo(%o) (after original)", arguments);
	}
});

Ext.onReady(function() {
	var
		a = new A();

	a.foo(1, 2, 3);
});
		</script>
	</head>
	<body>
	</body>
</html>


src\core\src\class\Base.js
Код: javascript
1.
2.
3.
4.
5.
6.
7.
...
        callOverridden: function(args) {
            var method = this.callOverridden.caller;

            return method.$previous.apply(this, args || []);
        },
...
...
Рейтинг: 0 / 0
29.05.2012, 16:20:36
    #37816626
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
разгадаешь - скажи
...
Рейтинг: 0 / 0
29.05.2012, 16:34:00
    #37816660
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
вот такой вариант нормально работает.
Код: javascript
1.
2.
3.
callOverridden: function co(args) {
	return co.caller.$previous.apply(this, args); // ворк
},



если не предполагается переопределять callOverridden - вполне прокатит
...
Рейтинг: 0 / 0
29.05.2012, 17:51:58
    #37816840
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
тем не менее, экст работает в исходном варианте
...
Рейтинг: 0 / 0
06.06.2012, 09:28:54
    #37827016
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FF Function.caller && Arguments
Пофиксили в 13-ке...
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / FF Function.caller && Arguments / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]