2013-04-19 7 views
2

나는 AngularJS와에 대해 읽기, 뉴스 그룹에 다음과 같은 성명을 통해 온되었다Javascript에서 클래스를 대체 할 수 있습니까?

나는 더 내가 각도 사용하는 것이 덜 관심 나는 클래스를 만드는이,하지만, 말해야한다. 클래스는 자바 스크립트가있는 곳이 아닙니다! 순수 기능과 클로저로 필요한 모든 기능을 수행 할 수 있으며 번거로운 "this"및 "that"에 대해 걱정할 필요가 없습니다.

"클로저"가 의미하는 바를 설명 할 수 있습니까?

+0

당신은 ... 제목, 또는 마지막 문장을 물어 무엇입니까? 기능적 접근 방식이 그 자리를 차지하고 있으며 원형 상속이 그 자리를 차지하고 있습니다. 둘 중 하나를 제외하는 것은 불행한 일입니다. "이"와 "그"문제는 큰 문제가 아닙니다. –

+0

javascript에는 클래스가 없으므로 (프로토 타입/객체가 있음) 질문에 많은 의미가 없습니다. – jfriend00

답변

1

클로저는 중첩 된 함수 내에서 외부 함수 범위가 내부 함수 내에 유지되는 자바 스크립트 코드의 구조입니다. 예

는 :

function outer(x,y){ 
    var t = 1; 
    return function(z){ 
     //x, y, t from the outer function are made available to inner function 
     return x + y + z + t; 
    } 
} 

var outer1 = outer(1,1); //creating a closure, or an instance of a function in sense 
alert(outer1(1)); //Alerts 4 

var outer2 = outer(2,2); 
alert(outer2(2)); //Alerts 7 

클로저의 간단한 설명 ECMAScript를 이너 기능을 허용한다는 것이다; 함수 정의 및 다른 함수의 함수 기호 안에 인 함수 표현식이 있습니다. 그리고 그 내부의 함수는 모든 로컬 변수, 파라미터 에 접근 할 수 있고 외부 함수 (들) 내에서 선언 된 내부 함수에 접근 할 수 있습니다. 폐쇄 함수 은 내부 함수 중 하나가 포함 된 함수의 외부 외부에서 액세스 가능하게 될 때 형성되므로 외부 함수가 반환 된 후에 이 실행될 수 있습니다. 어느 시점에서 여전히 로컬 변수, 매개 변수 및 내부 함수 에 대한 액세스가 외부 함수의 선언에 있습니다. 이러한 로컬 변수, 매개 변수 및 함수 선언 (처음에는)은 외부 함수가 반환 될 때 의 값을 가지며 내부 함수에 의해 상호 작용할 수 있습니다.

Source

관련 문제