Цитата:
Цитата:
|
Цитата:
|
Может кто-ни объяснить логику проявления след феномена (имеются ввиду результаты 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 ?? |
Очень информативная тема вышла. Только у меня один ворос, какой скоуп будет у функции, если я добавляю её к прототипу.
Тоесть не так: function myObj() { this.someMethod = function(){}; } а так: function myObj() { } myObj.prototype.someMethod = function(){}; Будет ли разница в скоупах в этих случаях у функции someMethod. Заранее благодарен. |
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. |
Yazla,
Если вызывать потом в контексте созданного объекта: obj.someMethod() то разницы нет, т.к. в теории при делегировании происходит автоматическая переадресация сообщений к предку с одновременным связыванием self (- this - в javascript) с получателем сообщения. Иными словами наследуемое свойство или собственное - прозрачно при вызове, и там, и там один и тот же объект. |
Спасибо за ответы, перечитал рекомендуемые статьи. Практически всё понятно. Но возник вопрос. Почему в одном примере "работает" а в другом нет?
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 Наверно стоит почитать про прототип. Может посоветуете какую нибудь статью. Спасибо. |
Наверное, потому что window тоже объект и при "Object.prototype.x=12" получает свойство "x".
|
Цитата:
Цитата:
Глобальный объект в Gecko имеет прототип, и наследуется он от Object. Соответственно, всё, что попало в Object.prototype будет найдено при разрешении имени какой-нибудь переменной/свойства - и в данном случае, это "x". В свою очередь с.prototype никакого отношения к объектам переменных не имеет. Цитата:
|
Цитата:
П.С. Большое спасибо за статьи, это то что я искал. |
Часовой пояс GMT +3, время: 22:43. |