Ну почему же?
function withEmu( object, f ) {
var argumentNamesArray = [],
argumentValuesArray = [],
newF;
for( var arg in object ) {
argumentNamesArray.push( arg );
argumentValuesArray.push( object[ arg ] );
}
argumentNamesArray.push( 'return (' + f + ')()' );
newF = Function.apply( null, argumentNamesArray );
return newF.apply( null, argumentValuesArray );
}
var div = document.createElement('div');
div.innerHTML = 'valera'
var x = withEmu( div, function() {
return innerHTML;
});
alert( x );
Только сеттер не будет срабатывать (innerHTML = 'valuev' → див не изменится)