이 'Controller'객체의 생성자를 원숭이 패치하고 싶습니다. 하지만 원저작을 호출 할 수 있도록 생성자 함수에 원숭이 패치를 적용하려면 어떻게해야합니까? 이것이 제가 시도한 것입니다.어떻게 개체의 생성자 함수를 원숭이가 패치합니까?
// original
function Controller() {
this._tag = 'div';
}
Controller.prototype.tag = function() {
console.log(this._tag);
}
var c = new Controller();
c.tag(); // -> 'div', as expected
// patch attempt
var original = Controller;
Controller = function() {
original.apply(this);
this._tag = 'patched'; // patch
}
var c = new Controller();
c.tag(); // no method tag, prototype appears wiped...
RHS 함수 표현식 주위의 그룹화 연산자가 불필요합니다. "생성자"는 다른 함수 내부에서 선언되므로 코드를 빠뜨린 코드가 외부 익명 함수 또는 다른 객체의 속성이 아닌 이상 외부에서 액세스 할 수 없습니다. 그래서 "원숭이 패치"생성자 (그게 무슨 뜻이든), 당신이 의견을 가지고 코드를 삽입하는 유일한 방법입니다 싶습니다. – RobG
@RobG 호기심이 심하다면 : http://en.wikipedia.org/wiki/Monkey_patch 원숭이에게 아주 솔직하게 속성이나 메소드를 패치합니다.하지만 생성자 함수가 특별한 상태로 인해 나는 손실을 입었습니다. 이것이 가능하지 않을 수도 있습니다. 그러나 귀하가 아직 언급하지 않은 이유에 대해서는 확실하지 않습니다. 반영 할 코드 샘플을 업데이트하겠습니다. –
은 더 나은 코드 샘플을 추가했습니다. –