ECMA V5 では、待望のメソッド Object.getPrototypeOf が定義されており、型情報に関係なくオブジェクトのプロトタイプ ([[prototype]]) を取得できます。これに基づいて再送信を構築できます。(Chrome 5、IE9 を使用してください。)プレビュー 3 番目のバージョンのテスト)
obj.resend = function () {
var pof = Object.getPrototypeOf;
var has = function() {......} // hasOwnProperty カプセル化
var make = function(obj, old) {
return function(name, args) {
var step = pof(obj),
r;
while (step && !has(step, name)) step = pof(step); if (!step) throw new Error('再送信できません: メソッドが見つかりません');
var foundMethod = step[name];
varbackup = argument.callee; make(this,backup);
r = foundMethod.apply(this, Array.prototype.slice.call(arguments, 1));
return r
}
};
return function(name, args__) {
var old = this.resend
this.resend = make(this, old); 🎜>rv = this.resend.apply(this, argument);
this.resend = オリジナル;
}
}()