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);