Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #101 (permalink)  
Старый 18.04.2009, 23:58
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

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


Сообщение от kefi
ну бог с ним со всем пока ...
Успехов.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #102 (permalink)  
Старый 19.04.2009, 00:04
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от kefi
A closure is formed by returning a function object
Это и называется "пережить контекст"..., и это позиция активных участников c.l.j, считающих, что идея замыкания наиболее полно раскрывается тогда, когда контекст "умер", а функция в нём созданная, "жива"... При этом технически в любой функции всё однотипно.
Ответить с цитированием
  #103 (permalink)  
Старый 25.04.2009, 16:21
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 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.
Ответить с цитированием
  #104 (permalink)  
Старый 10.11.2009, 12:53
Аспирант
Отправить личное сообщение для Yazla Посмотреть профиль Найти все сообщения от Yazla
 
Регистрация: 01.11.2009
Сообщений: 31

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


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

Будет ли разница в скоупах в этих случаях у функции someMethod.
Заранее благодарен.
Ответить с цитированием
  #105 (permalink)  
Старый 10.11.2009, 13:03
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

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.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #106 (permalink)  
Старый 10.11.2009, 15:59
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Yazla,

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

obj.someMethod()

то разницы нет, т.к. в теории при делегировании происходит автоматическая переадресация сообщений к предку с одновременным связыванием self (- this - в javascript) с получателем сообщения. Иными словами наследуемое свойство или собственное - прозрачно при вызове, и там, и там один и тот же объект.
Ответить с цитированием
  #107 (permalink)  
Старый 11.11.2009, 18:42
Аспирант
Отправить личное сообщение для Yazla Посмотреть профиль Найти все сообщения от Yazla
 
Регистрация: 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


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

Спасибо.
Ответить с цитированием
  #108 (permalink)  
Старый 11.11.2009, 19:56
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Наверное, потому что window тоже объект и при "Object.prototype.x=12" получает свойство "x".
Ответить с цитированием
  #109 (permalink)  
Старый 11.11.2009, 20:04
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 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. - там есть раздел про прототип, но лучше читать статью полностью.
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 11.11.2009 в 20:08.
Ответить с цитированием
  #110 (permalink)  
Старый 20.11.2009, 23:34
Аспирант
Отправить личное сообщение для Yazla Посмотреть профиль Найти все сообщения от Yazla
 
Регистрация: 01.11.2009
Сообщений: 31

Сообщение от Dmitry A. Soshnikov
http://javascript.ru/blog/Dmitry-A.-...-CHast-7.-OOP. - там есть раздел про прототип, но лучше читать статью полностью.
Хух, прочитал. Спасибо теперь всё понятно!!!
П.С. Большое спасибо за статьи, это то что я искал.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск