powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / FF Function.caller && Arguments
12 сообщений из 12, страница 1 из 1
FF Function.caller && Arguments
    #37814780
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не могу догнать в чем прЫкол: если юзать 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
FF Function.caller && Arguments
    #37814817
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это настолько офигенно, что у меня даже нет этому объяснения что интересно, в экст, с которого ты выдирал код судя по всему, не валится в ФФ, хотя код идентичен.
стоит добавить просто строчку "arguments;" в функцию, как оно заработает. Похоже на какой-то загон последнего файрфокса
...
Рейтинг: 0 / 0
FF Function.caller && Arguments
    #37814834
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыстоит добавить просто строчку "arguments;" в функцию, как оно заработает. Похоже на какой-то загон последнего файрфоксаага.
Код: javascript
1.
2.
var a = arguments;
return this.callOverridden.caller.$previous.apply(this, args); //work!!



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

Похоже в связи с тем, что это они изъять-то arguments.caller - изъяли, а Function.caller на ноги полностью самостоятельно так и не поставили...
...
Рейтинг: 0 / 0
FF Function.caller && Arguments
    #37815241
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так странно жеж что последний 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
FF Function.caller && Arguments
    #37815358
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> так странно жеж что последний Ext про это не знает и вроде как не падает
Дык отож...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FF Function.caller && Arguments
    #37815397
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
значит где-то ещё есть "волшебный триггер"
...
Рейтинг: 0 / 0
FF Function.caller && Arguments
    #37815768
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/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
FF Function.caller && Arguments
    #37816626
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разгадаешь - скажи
...
Рейтинг: 0 / 0
FF Function.caller && Arguments
    #37816660
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такой вариант нормально работает.
Код: javascript
1.
2.
3.
callOverridden: function co(args) {
	return co.caller.$previous.apply(this, args); // ворк
},



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


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