찾다

 >  Q&A  >  본문

javascript - JS 작성 테스트 문제인데 잘 이해가 안 되네요. 설명해주세요.

으아아아

결과는 Z로, 콘솔 출력 예시는 다음과 같습니다.

phpcn_u1582phpcn_u15822845일 전515

모든 응답(4)나는 대답할 것이다

  • 滿天的星座

    滿天的星座2017-05-19 10:42:23

    사실 이유는 매우 간단합니다. 문제는 for 루프에 있습니다

    으아악

    여기서 마지막 키 === 'z'이고 다른 속성의 결과는 params['z']인 params[key]를 반환합니다

    회신하다
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:42:23

    이것은 객체 복사 함수입니다. 원본 객체와의 유일한 차이점은 클로저로 인해 복사된 객체 a의 속성을 탐색할 수 없다는 것입니다. get 함수가 호출하는 키는 모두
    a입니다. = {

    으아악

    }

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:42:23

    클로저를 생성하거나 let을 사용하세요

    으아악

    또는 var 키를 let key로 변경하세요

    회신하다
    0
  • 阿神

    阿神2017-05-19 10:42:23

    으아악

    여기서, Object.defineProperty(this, key, {})여기서 key를 읽고 즉시 사용하므로 예상되는 동작입니다x,y, zObject.defineProperty(this, key, {})这里的key是立即读取使用的,所以是预期行为x,y,z

    Object.defineProperty(this, key, {
        get : function() {
            return params[key]
        },
        enumerable : false
    });

    这个函数是未来的一个时间点执行的,所以运行的时候读取的是最后的key值,即z 으아악

    이 함수는 미래 시점에 실행되므로 실행 시 마지막 값인 z를 읽어옵니다. 이것은 고전적인 폐쇄 문제와 동일합니다.

    으아악

    인쇄된 모든 것은 5입니다. 🎜

    회신하다
    0
  • 취소회신하다