캡슐화는 OO 프로그래밍의 핵심 임원이다.함수의 캡슐화 | OO의 관점에서의 목적
그러나 함수를 비공개로 만든 다음 사용할 수 있도록 반환하면 효과적으로 처리 할 수 있습니다.
나는 생각하지 않을 것이다, 그 b.c. 함수를 반환하면 복사본을 반환하지 않습니다 ... 참조를 반환합니다. 그것이 질문의 핵심입니다. 함수를 반환하면 해당 함수가 복사되거나 실제 함수를 참조합니다.
OO 프로그래밍이 원하는대로 func1을 개인적이고 안전하게 유지합니다.
캡슐화/데이터 숨기기가 실제로 기능과 관련이 없습니까?
var Class = (function() {
var private_data = 1234,
private_method = function (x) { private_data += x; },
public_method = function (x) { private_method(x); },
other_method = function() { return private_data; },
public_interface = {
add : public_method,
toString : other_method
};
return public_interface;
}());
지금 인터페이스에 프로그래밍 한 :
var A = (function(){
var func1 = function(param){
// do stuff
},
publik;
publik.retFunc(){
return func1;
}
return publik;
}())
A.retFunc()(arg1);
예제 코드에 오류가 있습니다. A에서 구문 오류가 발생합니다 ('retFunc'을 함수 선언으로 사용해야합니까?). 일단이를 고치면 A는'retFunc '. –
캡슐화가 기능과 관련이 있는지 또는 어떻게 캡슐화가이 것을 판단 할 지에 대한 의미가 무엇인지는 분명하지 않습니다. – djechlin
당신은 함수 선언 괄호의 바깥쪽에 평가 괄호를 넣으려고 했습니까? –