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

this в обработчике click - это DOM-элемент, на котором произошел клик мышью. Если ты его не передаешь в функцию delete_row, то, естественно, он сам туда не передастся, а получит контекст по умолчанию (window):
var obj = {};

function f1(){
    alert( this === obj );
    f2( this );
}

function f2( arg ){
    alert([ this === window, arg === obj ]);
}

f1.call(obj);

вызвать функцию с тем же объектом в качестве this можно так
var obj = {};

function f1(){
    alert( this === obj );
    f2.call( this );
}

function f2(){
    alert( this === obj );
}

f1.call(obj);

а можно просто упрощенно говоря "назначить" функции this
Function.prototype.of = function( o ){
    var f = this;
    return function(){
        return f.apply(o, arguments);
    };
};

var obj = {};

function f1(){
    alert( this === obj );
    f2.of(this)();
    f3( f2.of(this) );
}

function f2(){
    alert( this === obj );
}

function f3( f ){
    f();
}

f1.call(obj);
Ответить с цитированием