이 JS 코드 조각에는 private 함수 (bar 및 bar2)의 두 가지 버전이있는 개체가 있습니다. 나는 두 개의 인스턴스를 선언하지만 private 함수 (bar)의 한 버전이 다른 객체의 private var v 값에 잘못 액세스하고있는 것처럼 보입니다. 아무도 왜 이것이라고 말해 줄 수 있니?JS : 개인 함수 선언 방법의 효과 차이점
Eric = function(_v)
{
var v = _v;
bar = function() {
alert(v);
};
function bar2() {
alert(v);
};
this.foo = function() {
bar();
};
this.foo2 = function() {
bar2();
};
};
var e = new Eric('I am Eric');
var e2 = new Eric('I am Eric II');
e2.foo(); // outputs "I am Eric II"
e.foo(); // outputs "I am Eric II" ------ WHY?
e2.foo2(); // outputs "I am Eric II"
e.foo2(); // outputs "I am Eric"
많은 감사 앤드류
+1 내 솔루션보다 우수하므로 – Tejs
아, 알겠습니다! 나는 바가 에릭 내부에서 선언 되었기 때문에 그것이 잘못되었다고 생각했다. 감사합니다, Raynos, 그 (그리고 내 다른 오류! :-)) – andrewk
바가 글로벌이기 때문에, 나는 왜, 왜 개인적인 변수 v. – andrewk