Показать сообщение отдельно
  #19 (permalink)  
Старый 04.07.2009, 22:15
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от `p r o x y
да лана, тебе умничать
сам ты умничаешь

Сообщение от `p r o x y
Если в объекте не найден метод, он ищется в прототипе.
function c() {}
c.prototype.m1 = function() { alert(1); }
var o = new c();
o.m2 = function() { alert(2); }
o.m1();
o.m2();


Цитата:
в общем, без prototype-ов, так и не понял как добиться вызова одного метода из другого метода, одного и того же объекта
потом разберешься, если понадобится

Сообщение от `p r o x y
А с prototype-ом, вариант такой
лучше по-другому
function c() {}
c.prototype.m1 = function() { 
    alert(this instanceof c);
    if( this.m2 )
        this.m2();
}
c.prototype.m2 = function() { alert(2); }
var o = new c(); // здесь содержимое c.prototype
    // копируется в прототип объекта o
var o2 = {
    m3: o.m1, // эта ссылка указывает на o.prototype.m1
        // (в объекте o нету метода m1
        // но он есть в прототипе)
    m4: function() {
        // вызываем функцию o.m1 так,
        // чтобы this указывал на o
        o.m1.call( o );
    }};
o2.m3(); // при вызове this будет указывать на o2
    // а в объекте o2 нету метода m2
o2.m4();
Ответить с цитированием