0
외부 라이브러리 (ember-data)를 변경하려고합니다. 그러나 나는 변화시키고 자하는 기능의 범위에 접근 할 수 없다. 다른 범위의 액세스 기능이 형제에 액세스하는 동안
은 내가 설명과 매우 단순화 된 유스 케이스와 JS 바이올린을했다 : http://jsfiddle.net/yr5Lmzyk/3/// =========== External libary (cannot be changed)---------------------------
var ex = {};
(function (__exp__){
ob = {
prefix: 'object-prefix',
say: function(word){
return this.prefix + "|" + abcd(word);
}
};
function abcd(a){
return a + "|function-postfix";
}
__exp__.ob = ob;
}(ex));
var ob = ex.ob;
// ================= Available/ ajustable code ---------------------
// i want to change the working of the abcd function.
// in the real case abcd is used in many functions of ob, but i only want to change that function.
$("#content").html(ob.say("call-parameter"));
상단 부분은 "외부"LIB, 난 변경할 수 없습니다입니다. 아래 부분은 내 코드이며, 여기에 액세스 할 수 있습니다. ob 객체에서 say 메소드를 실행하면 함수 abcd가 사용됩니다. 이 기능의 작동을 변경하고 싶습니다.
이 범위에 액세스하여 abcd 기능을 변경하려면 어떻게해야합니까?
가 변경할 수 있습니다 노출되지 않은 당신이 일에 액세스 할 수있는 방법이없는 개인 프로토 타입의 말 또는 ab에 추가 기능을 추가하여 해당 범위에서 abcd의 프로토 타입을 변경합니다. – Lrdv
아니요 'abcd'를 만질 수 없습니다. 메모리에 저장됩니다. 객체 나 다른 객체 안에 있지 않으므로 액세스 할 수 없습니다. 'say' 나'prefix'가 노출되어 있기 때문에 원하는 것을 할 수 있습니다. – Asgaroth