new は予約語なので、代わりにneoで*1 Function.prototype.neo =function(){ var obj={}; obj.__proto__ = this.prototype; var ret = this.apply(obj,arguments); if( ret && typeof(ret)=='object' ){ delete obj; obj = ret; } return obj; }ふむ… obj={} は obj= new Object なので「実装する」と偉そうに言ったわりにアレだが、別に実装が目的ではなくてJavascriptのnew(とthis)の動きを理解するためのサンプルだからこれでいいのだ。 プロトタイプチェーン __proto__ をいじれる系(firefoxとか)なら、だいたいうまくいくはず。 // クラス定義のようなもの fun