2011-03-12 3 views
12

, (무엇보다도) 좋은 부품 4 장에 관한 기능에Javascript에서 헬퍼 메소드가 자주 사용되는 이유는 무엇입니까? 크록 포드의 자바 스크립트 읽는 새로운 자바 스크립트에

는 크록 포드가 이해 내부 기능에 사용하기 위해 외부 기능이 보존하는 방법을 보여주고있다.

내 질문입니다, 자신의 예제 코드와 더 좋아 톤에, 왜이 도우미 함수 사용 가치가있는 동안,

myObject.double = function() { 
    var that = this; 

    var helper = function() { 
     that.value = add(that.value, that.value); 
    } 
    helper(); 
}; 

이 추가가() 전역에서 앉아있다 어쩌면 때문에인가를 myObject, 그래서 this (myObject)를 복사 한 다음 add()를 가져올 수있는 전역으로 전송해야합니까?

그렇지 않으면 왜 도우미 기능이 필요한지 잘 모르겠습니다.

답변

13

책의 해당 섹션에서 그는 기능 부모의 this 개체에 액세스 할 때 that을 사용하는 것이 일반적이라고 설명합니다.

코드 기능을 수행하는 도우미 함수를 사용할 필요는 없습니다. 이는 this 개체로 범위 지정 문제를 해결하는 방법을 보여주는 예일뿐입니다.

+0

그 개념을 보여 주는지 궁금합니다. 감사합니다 –

+1

좋은 대답 나는 내가 "그"를 놓친 것 같아요. – airmanx86

2

캡슐화. 귀하의 예에서 helper()myObject.double()의 범위 안에 만 존재하며 외부에서는 볼 수 없거나 보이지 않습니다. 나는 그것이 "도우미"기능 대신 개인적인 방법이라고 믿는다.

1

이 책에는 "이것은 잘못된 값에 묶여있다"고되어 있습니다. "this"의 "잘못된"값이 전역 개체입니까? 크록 포드 (Crockford)가 수정 한 방식으로 인해 불확실 해졌습니다. this.helper()를 호출하여 "고전적인"배경을 가진 사람들에게 익숙한 방식으로이를 고칠 수는 없습니까? 즉 헬퍼()를 공용 메서드로 만드는 것일까 요? 나는 그것이 맞다는 것을 추측 할 것이고 그가 그것을했던 방식으로 추측 할 것이다. (또한) 여전히 함수 invokation 패턴을 사용하는 해결 방법을 보여 주지만 그것을 확인하고 싶을 것이다. javascript에 익숙하지 않아서 내 추측이 맞는지 확실하지 않습니다.

관련 문제