javascript - JS 작성 테스트 문제인데 잘 이해가 안 되네요. 설명해주세요.
phpcn_u1582
phpcn_u1582 2017-05-19 10:40:23
0
4
494
으아아아

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

phpcn_u1582
phpcn_u1582

모든 응답(4)
滿天的星座

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

으아악

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

给我你的怀抱

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

으아악

}

伊谢尔伦

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

으아악

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

阿神

으아악

여기서, 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입니다. 🎜
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿