Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   хитросплетения Global,контекст,this,Reference (https://javascript.ru/forum/misc/3158-khitrospleteniya-global-kontekst-reference.html)

Dmitry A. Soshnikov 18.04.2009 23:58

Цитата:

Сообщение от kefi
я обнаружил гораздо больше моего понимания , чем Вашего

:)

Цитата:

Сообщение от kefi
ну бог с ним со всем пока ...

Успехов.

Zeroglif 19.04.2009 00:04

Цитата:

Сообщение от kefi
A closure is formed by returning a function object

Это и называется "пережить контекст"..., и это позиция активных участников c.l.j, считающих, что идея замыкания наиболее полно раскрывается тогда, когда контекст "умер", а функция в нём созданная, "жива"... При этом технически в любой функции всё однотипно.

kefi 25.04.2009 16:21

Может кто-ни объяснить логику проявления след феномена (имеются ввиду результаты 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


??

Yazla 10.11.2009 12:53

Очень информативная тема вышла. Только у меня один ворос, какой скоуп будет у функции, если я добавляю её к прототипу.
Тоесть не так:
function myObj()
{
     this.someMethod = function(){};
}


а так:
function myObj()
{
     
}
myObj.prototype.someMethod = function(){};

Будет ли разница в скоупах в этих случаях у функции someMethod.
Заранее благодарен.

Dmitry A. Soshnikov 10.11.2009 13:03

Yazla, у Вас сейчас путаница между понятиями Scope, [[Scope]] и this-value. Под скоупом, как я вижу, Вы понимаете this-value.

Почитайте последовательно эти статьи:

http://javascript.ru/blog/Dmitry-A.-...kt-peremennyh.

http://javascript.ru/blog/Dmitry-A.-...j-vidimosti.-0

http://javascript.ru/blog/Dmitry-A.-...CHast-3.-This.

Zeroglif 10.11.2009 15:59

Yazla,

Если вызывать потом в контексте созданного объекта:

obj.someMethod()

то разницы нет, т.к. в теории при делегировании происходит автоматическая переадресация сообщений к предку с одновременным связыванием self (- this - в javascript) с получателем сообщения. Иными словами наследуемое свойство или собственное - прозрачно при вызове, и там, и там один и тот же объект.

Yazla 11.11.2009 18:42

Спасибо за ответы, перечитал рекомендуемые статьи. Практически всё понятно. Но возник вопрос. Почему в одном примере "работает" а в другом нет?
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


Наверно стоит почитать про прототип. Может посоветуете какую нибудь статью.

Спасибо.

Riim 11.11.2009 19:56

Наверное, потому что window тоже объект и при "Object.prototype.x=12" получает свойство "x".

Dmitry A. Soshnikov 11.11.2009 20:04

Цитата:

Сообщение от 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. - там есть раздел про прототип, но лучше читать статью полностью.

Yazla 20.11.2009 23:34

Цитата:

Сообщение от Dmitry A. Soshnikov
http://javascript.ru/blog/Dmitry-A.-...-CHast-7.-OOP. - там есть раздел про прототип, но лучше читать статью полностью.

Хух, прочитал. Спасибо теперь всё понятно!!!
П.С. Большое спасибо за статьи, это то что я искал.


Часовой пояс GMT +3, время: 08:27.