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