var o = new SomethingComplex;
var o.foo = new SomeThing; // we have o.foo.doSomething
setUpForwarding(o, o.foo);
o.doSomething(); // calls o.doSomething if exist, else o.foo.doSomething
눈에 거슬리지 방법 전송을 설정하는 방법은 무엇입니까? ES5 기술을 사용하는 것은 완벽합니다. 나는 이것이 IE6에서 불가능하다고 상상할 수있다.방해가되지 않는 메서드 전달을 구현하는 방법은 무엇입니까?
나는 o.call("doSomething");
과 같은 방법을 찾고 있지 않다. 나는 그것이 완전히 눈에 거슬리지 않게되고 싶다.
또한 .__proto__
을 편집하면 프로토 타입 체인에 o.foo
을 던져 버릴 수 있으므로 허용되지 않습니다. 원래의 프로토 타입 체인에서 o
을 o.foo
으로 덮어 쓸 수 있지만 o
은 복잡성에 제한이 없습니다.
실용 가능한 옵션이 있습니까?
나는 node.js을 확장하여 (C++에서 구현 됨) 구현할 수있는 node-proxy의 존재를 기억합니다. 이는 포괄적 인 기능을 제공하며 다른 SS JS로 포팅 될 수 있습니다.
동적이어야합니까? 그렇지 않으면 "o.foo"의 모든 속성을 병합하여 "o"를 수정하지 않는 것이 어떻습니까? – Pointy
@Pointy 구성을 피하고 집계 및 전달을 사용하고 싶었습니다. 만약 내가 aggregation & forwarding을 사용하고 있다면, 대신 컴포지션을 사용해야하고 그것은 냄새라고 주장한다. – Raynos