18.04.2009, 23:58
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от kefi
|
я обнаружил гораздо больше моего понимания , чем Вашего
|
Сообщение от kefi
|
ну бог с ним со всем пока ...
|
Успехов.
|
|
19.04.2009, 00:04
|
...
|
|
Регистрация: 09.03.2008
Сообщений: 216
|
|
Сообщение от kefi
|
A closure is formed by returning a function object
|
Это и называется "пережить контекст"..., и это позиция активных участников c.l.j, считающих, что идея замыкания наиболее полно раскрывается тогда, когда контекст "умер", а функция в нём созданная, "жива"... При этом технически в любой функции всё однотипно.
|
|
25.04.2009, 16:21
|
Кандидат Javascript-наук
|
|
Регистрация: 12.03.2009
Сообщений: 148
|
|
Может кто-ни объяснить логику проявления след феномена (имеются ввиду результаты 1,2,0 и 2,2,1 ) :
function al(o){document.write(o,'<br>')} ;
function F(a){
// arguments[0]=2
a=1;
arguments[0]=2;
al([a,arguments[0],arguments.length]);
};
F();F(4); // 1,2,0 2,2,1
al(a); // ошибка a is not defined
??
Последний раз редактировалось kefi, 25.04.2009 в 16:37.
|
|
10.11.2009, 12:53
|
Аспирант
|
|
Регистрация: 01.11.2009
Сообщений: 31
|
|
Очень информативная тема вышла. Только у меня один ворос, какой скоуп будет у функции, если я добавляю её к прототипу.
Тоесть не так:
function myObj()
{
this.someMethod = function(){};
}
а так:
function myObj()
{
}
myObj.prototype.someMethod = function(){};
Будет ли разница в скоупах в этих случаях у функции someMethod.
Заранее благодарен.
|
|
10.11.2009, 15:59
|
...
|
|
Регистрация: 09.03.2008
Сообщений: 216
|
|
Yazla,
Если вызывать потом в контексте созданного объекта:
obj.someMethod()
то разницы нет, т.к. в теории при делегировании происходит автоматическая переадресация сообщений к предку с одновременным связыванием self (- this - в javascript) с получателем сообщения. Иными словами наследуемое свойство или собственное - прозрачно при вызове, и там, и там один и тот же объект.
|
|
11.11.2009, 18:42
|
Аспирант
|
|
Регистрация: 01.11.2009
Сообщений: 31
|
|
Спасибо за ответы, перечитал рекомендуемые статьи. Практически всё понятно. Но возник вопрос. Почему в одном примере "работает" а в другом нет?
function c() {
function d() {
alert(x);
}
d();
}
Object.prototype.x=12;
c(); // РАБОТАЕТ т. е. выводит 12
function c() {
function d() {
alert(x);
}
d();
}
с.prototype.x=12;
c(); // НЕ работает //undefined
Наверно стоит почитать про прототип. Может посоветуете какую нибудь статью.
Спасибо.
|
|
11.11.2009, 19:56
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Наверное, потому что window тоже объект и при "Object.prototype.x=12" получает свойство "x".
|
|
11.11.2009, 20:04
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от Yazla
|
Object.prototype.x=12; c(); // РАБОТАЕТ т. е. выводит 12
|
Сообщение от Yazla
|
с.prototype.x=12; c(); // НЕ работает //undefined
|
А с чего бы, вдруг, "x" разрешится в "c.prototype"? Scope chain - это цепь объектов переменных. Опрос её при разрешении имени (в данном случае "x") идёт последовательно изнутри вверх. Также, на каждом звене цепи делается просмотр вглубь звена - т.е. анализируется цепь прототипов звена (конкретного объекта переменных в цепи), если она есть. И лишь некоторые объекты переменных могут иметь прототип.
Глобальный объект в Gecko имеет прототип, и наследуется он от Object. Соответственно, всё, что попало в Object.prototype будет найдено при разрешении имени какой-нибудь переменной/свойства - и в данном случае, это "x".
В свою очередь с.prototype никакого отношения к объектам переменных не имеет.
Сообщение от Yazla
|
Наверно стоит почитать про прототип. Может посоветуете какую нибудь статью.
|
http://javascript.ru/blog/Dmitry-A.-...-CHast-7.-OOP. - там есть раздел про прототип, но лучше читать статью полностью.
Последний раз редактировалось Dmitry A. Soshnikov, 11.11.2009 в 20:08.
|
|
20.11.2009, 23:34
|
Аспирант
|
|
Регистрация: 01.11.2009
Сообщений: 31
|
|
Сообщение от Dmitry A. Soshnikov
|
http://javascript.ru/blog/Dmitry-A.-...-CHast-7.-OOP. - там есть раздел про прототип, но лучше читать статью полностью.
|
Хух, прочитал. Спасибо теперь всё понятно!!!
П.С. Большое спасибо за статьи, это то что я искал.
|
|
|
|