まともに動きそうにないので、プロパティをコピーするんじゃなくて、元オブジェクトを拡張するように修正。newしてるんだし、まあクラスかな、と。なんか、コンストラクタとグローバル関数の境があいまいだなー。
<html> <head> <script> function Bar(obj) { obj.hello = function() { alert('hello') }; return obj; } </script> </head> <body> <input id="foo" type="button" value="ボタン"> <script> var foo = document.getElementById('foo'); var bar = new Bar(foo); bar.onclick = function() {this.hello()}; </script> </body> </html>