이 대신 객체의 메서드에서 객체 이름이 사용되는 이유는 무엇입니까?

Garth Marenghi

다음 코드 조각 store.nextIdstore.cache에서 사용되는 add방법. 왜 안될까요 this?

var store = {
  nextId: 1,

  cache: {},

  add: function(fn) {
    if (!fn.id) {
      fn.id = store.nextId++;
      return !!(store.cache[fn.id] = fn);
    }
  }
};

제 질문에 답 해주신 모든 분들께 감사드립니다!

루 아크

사용의 의미는 store사용과는 약간 다른 this점에서 당신이 이제까지 취급하는 경우 store.add(예를 들어, 다른 함수에 인수로 전달), 다음 사용하여 일반 함수로 store수단을 함수가 여전히 참조 할 것을에 store사용하는 반면 this것 대신 전역 개체를 참조하도록합니다.

물론 트레이드 오프는이 add메서드가 해당 변수 로 원래 식별 된 객체가 아니라 항상 현재 변수로 식별 된 객체를 참조 store한다는 것입니다. 이 메서드가 실제로 항상 동일한 객체를 참조한다고 가정하면 두 접근 방식의 이점을 얻는 방법은 즉시 호출되는 함수 표현식을 사용하는 것입니다.

var store = (function () {
    var store = {
        ...  // exactly as defined in the code you posted, but now 'store'
             // refers to the *local* variable 'store', which can never change
    };
    return store;
})();

즉,이 코드의 저자가 염두에두고 특정 유스 케이스가 있고, 단순히 참조하는 것이 명확라고 생각하지 않으면 그것은 나를 놀라게하지 것이라고 말했다 storestore심지어는 방법 내부.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

객체의 RDF에서 문자열 대신 코드가 사용되는 이유는 무엇입니까?

분류에서Dev

구체적인 구현에서 유형 이름 대신 Self를 사용하는 이유는 무엇입니까?

분류에서Dev

Angular4-사용자 정의 toJSON ()이 새 객체에서만 호출되는 이유는 무엇입니까?

분류에서Dev

Yii2가 객체 대신 규칙에 배열을 사용하는 이유는 무엇입니까?

분류에서Dev

json 객체에 대한 Kotlin 객체 클래스가 null이되는 이유는 무엇입니까?

분류에서Dev

객체 dtype 배열에 numpy.datetime64 객체 대신 datetime.datetime 객체가 포함되는 이유는 무엇입니까?

분류에서Dev

Quasar 앱에서 vuex가 배열 대신 객체를 반환하는 이유는 무엇입니까?

분류에서Dev

대체 함수에 발신자 객체가없는 이유는 무엇입니까?

분류에서Dev

객체 태그에 src 대신 data 속성이있는 이유는 무엇입니까?

분류에서Dev

함수에 대한 인수가 입력이 객체의 속성 인 해당 메서드가있는 객체 인 경우 Typescript에서 메서드 호출을 추론 할 수없는 이유는 무엇입니까?

분류에서Dev

전달 된 객체를 메서드의 새 값에 할당 할 수없는 이유는 무엇입니까?

분류에서Dev

SQL에서 객체 (모든 키 이름 포함)의 객체를 얻는 방법은 무엇입니까?

분류에서Dev

메서드를 사용하기 전에 req.user 객체를 추가하는 이유는 무엇입니까?

분류에서Dev

Replace 메서드를 사용할 때 문자열이 대체되지 않는 이유는 무엇입니까?

분류에서Dev

comapion의 이익 대신 정적 방법과 필드의 객체는 무엇입니까?

분류에서Dev

이 JSON 객체에서 '정의되지 않음'이 표시되는 이유는 무엇입니까?

분류에서Dev

Mongodb가 단순한 객체 배열 대신 ObjectsId 배열을 만드는 이유는 무엇입니까?

분류에서Dev

const 객체에서 이동이 작동하는 이유는 무엇입니까?

분류에서Dev

이 상황에서`push` 메소드가 객체에 작동하는 이유는 무엇입니까?

분류에서Dev

함수 속성은 객체 자체 (예 : Function.name)에 정의되지만 메서드는 Function.prototype에 정의되는 이유는 무엇입니까?

분류에서Dev

Keras 서브 클래 싱 API에서 호출 메서드가 호출되지 않고 대체로이 클래스의 객체를 호출하여 입력이 전달되는 이유는 무엇입니까?

분류에서Dev

이름 대신 객체의 값을 지속적으로 저장하는 방법은 무엇입니까?

분류에서Dev

HashMap에서 가져온 객체에 다른 클래스의 공용 메서드를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

단일 객체 대신 객체의 파이썬 행렬에서 전체 행에 대해 호출되는 함수

분류에서Dev

프로토 타입에 정의 된 메서드가 객체 자체에 표시되는 이유는 무엇입니까?

분류에서Dev

객체 내의 필드에 대한 "속기"참조 작성 : 방법과 이유는 무엇입니까?

분류에서Dev

V8에서 객체 리터럴에 대한 메서드 호출이 느린 이유는 무엇입니까?

분류에서Dev

이 간단한 함수가이 자바 스크립트 상태 머신의이 객체에서 실행될 수없는 이유는 무엇입니까?

분류에서Dev

이 FactoryGirl 객체에서 #create가 실패하는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    객체의 RDF에서 문자열 대신 코드가 사용되는 이유는 무엇입니까?

  2. 2

    구체적인 구현에서 유형 이름 대신 Self를 사용하는 이유는 무엇입니까?

  3. 3

    Angular4-사용자 정의 toJSON ()이 새 객체에서만 호출되는 이유는 무엇입니까?

  4. 4

    Yii2가 객체 대신 규칙에 배열을 사용하는 이유는 무엇입니까?

  5. 5

    json 객체에 대한 Kotlin 객체 클래스가 null이되는 이유는 무엇입니까?

  6. 6

    객체 dtype 배열에 numpy.datetime64 객체 대신 datetime.datetime 객체가 포함되는 이유는 무엇입니까?

  7. 7

    Quasar 앱에서 vuex가 배열 대신 객체를 반환하는 이유는 무엇입니까?

  8. 8

    대체 함수에 발신자 객체가없는 이유는 무엇입니까?

  9. 9

    객체 태그에 src 대신 data 속성이있는 이유는 무엇입니까?

  10. 10

    함수에 대한 인수가 입력이 객체의 속성 인 해당 메서드가있는 객체 인 경우 Typescript에서 메서드 호출을 추론 할 수없는 이유는 무엇입니까?

  11. 11

    전달 된 객체를 메서드의 새 값에 할당 할 수없는 이유는 무엇입니까?

  12. 12

    SQL에서 객체 (모든 키 이름 포함)의 객체를 얻는 방법은 무엇입니까?

  13. 13

    메서드를 사용하기 전에 req.user 객체를 추가하는 이유는 무엇입니까?

  14. 14

    Replace 메서드를 사용할 때 문자열이 대체되지 않는 이유는 무엇입니까?

  15. 15

    comapion의 이익 대신 정적 방법과 필드의 객체는 무엇입니까?

  16. 16

    이 JSON 객체에서 '정의되지 않음'이 표시되는 이유는 무엇입니까?

  17. 17

    Mongodb가 단순한 객체 배열 대신 ObjectsId 배열을 만드는 이유는 무엇입니까?

  18. 18

    const 객체에서 이동이 작동하는 이유는 무엇입니까?

  19. 19

    이 상황에서`push` 메소드가 객체에 작동하는 이유는 무엇입니까?

  20. 20

    함수 속성은 객체 자체 (예 : Function.name)에 정의되지만 메서드는 Function.prototype에 정의되는 이유는 무엇입니까?

  21. 21

    Keras 서브 클래 싱 API에서 호출 메서드가 호출되지 않고 대체로이 클래스의 객체를 호출하여 입력이 전달되는 이유는 무엇입니까?

  22. 22

    이름 대신 객체의 값을 지속적으로 저장하는 방법은 무엇입니까?

  23. 23

    HashMap에서 가져온 객체에 다른 클래스의 공용 메서드를 사용할 수없는 이유는 무엇입니까?

  24. 24

    단일 객체 대신 객체의 파이썬 행렬에서 전체 행에 대해 호출되는 함수

  25. 25

    프로토 타입에 정의 된 메서드가 객체 자체에 표시되는 이유는 무엇입니까?

  26. 26

    객체 내의 필드에 대한 "속기"참조 작성 : 방법과 이유는 무엇입니까?

  27. 27

    V8에서 객체 리터럴에 대한 메서드 호출이 느린 이유는 무엇입니까?

  28. 28

    이 간단한 함수가이 자바 스크립트 상태 머신의이 객체에서 실행될 수없는 이유는 무엇입니까?

  29. 29

    이 FactoryGirl 객체에서 #create가 실패하는 이유는 무엇입니까?

뜨겁다태그

보관