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('재전송할 수 없음: 메서드 누락');
varfoundMethod = step[name]
var backup =args.callee
this.resend = make(this, 백업);
r =foundMethod.apply(this, Array.prototype.slice.call(arguments, 1))
this.resend = old
return r
}
};
return function(name, args__) {
var rv;
var old = this.resend;
make(this, old); 🎜>rv = this.resend.apply(this, 인수);
this.resend = 원본;
return rv;