2014-12-02 2 views
-1

조금 혼란 스럽습니다. 여기에 JS 코드가 있습니다 :var 변수를 선언 할 때와 자기를 사용할 때

(function(){ 
    var self = this; 
    var view = 12; 

    self.value = null; 

    .... 
}); 

나는 var 변수를 사용하여 이해 = 12 뷰 변수에 대한 로컬 범위를 만듭니다. 그러나 self.value도 값 변수의 "로컬"범위를 만들지 않습니까? 그렇다면 차이점은 무엇입니까, 아니면 뭔가 빠져 있습니까?

+1

'self.value = ... '는 단순히'self' ('this')가 참조하는 객체에 ** 속성 **을 생성합니다. 변수와 속성은 두 개의 다른 짐승입니다. 당신이 여기에서 비교하기를 원하는지 확실하지 않습니다. –

+0

감사합니다. Felix, 저는 JS에 newb입니다. 답을 읽은 후 PHeonix가 아래에 있고 링크가 제공되면 diff를 이해합니다. 알았다 ! – nanonerd

+0

함수를 생성자로 사용할 수 있습니다. this.something은 인스턴스 특정 멤버이며 생성자 프로토 타입의 멤버는 인스턴스간에 공유됩니다. var로 선언 된 멤버는 개인 멤버를 시뮬레이트하기 위해 클로저에서 사용할 수 있습니다. 모두 여기에 설명되어 있습니다 : http://stackoverflow.com/questions/16063394/prototypical-inheritance-writing-up/16063711#16063711 – HMR

답변

1

self은 로컬 변수입니다. self.value을 사용하면 self 변수에 프로토 타입 속성을 추가하고이를 null에 할당합니다.

+1

"프로토 타입 속성"이란 무엇입니까? 그것은 "정상적인"속성과 어떻게 다릅니 까? – Bergi

+0

"프로토 타입 변수 범위"란 무엇입니까? * "기본 개념은 동일한 범위 또는 더 높은 범위의 변수에만 액세스 할 수 있다는 것입니다."* 범위가 작동하는 방식입니다. 프로토 타입과는 아무런 관련이 없습니다. –

+0

@FelixKling OP는 스코핑이 처음에는 어떻게 작동하는지 이해하지 못하는 것 같습니다. 그래서 내가 그 맛있는 음식을 포함 시켰습니다. – Codeman

관련 문제