서비스 내의 함수에서 let 및 new를 사용하여 새 개체를 만들 때 이전 개체를 얻는 이유는 무엇입니까?

dahis39

angular2의 간단한 기본 인증 서비스입니다.

사용자가 처음 로그인하면 작동합니다. 그러나 다른 계정으로 두 번째 로그인을 시도 할 때. 요청 헤더에 이중 기본 인증 문자열이 있습니다. "Authorization : Basic YWRtaW46YWJjMTIz, Basic RMcasd9WJjMXoPj"와 같습니다.

이것은 서비스입니다 :

@Injectable()
export class AuthenticationService {
private url: string = 'http://localhost:8080/api/test';
private username: string;
private password: string;
private authenticationStatus: boolean = false;

constructor(private http: Http) { }

authentication(username: string, password: string): Promise<boolean> {

    let headers = new Headers(); // <== previous headers object with old Authorization string get back from grave.
    console.log(headers);  

    headers.append("Authorization", "Basic " + btoa(username + ":" + password));
    headers.append("Content-Type","application/json;charset=utf-8");

    return this.http.get(this.url, { headers: headers })
        .toPromise()
        .then(response => { ...

이것은 나의 첫 번째 시도 각도 / 타이프 스크립트 앱입니다. 여기서 let과 new를 모두 사용할 때 새로운 개체를 얻지 못해서 혼란 스럽습니다. 헤더 클래스 내의 headersString이 정적이기 때문입니까? 각도 헤더 클래스 api 문서를 살펴 보았습니다. 나는 , The old Authorization 헤더가 남아있는 headers.delete("Authorization");직후에 전화를 시도 했습니다 let headers = new Headers();.

Basarat

여기서 let과 new를 모두 사용할 때 새로운 개체를 얻지 못해서 혼란 스럽습니다.

객체를 기록 할 때 객체에 대한 참조 가 기록됩니다.

예로서:

let x = {};
console.log(foo);
x.foo = 'foo';

이제 콘솔에서 x를 변경 한 후 살펴보면 새로운 내용이 표시됩니다.

여기에 이미지 설명 입력

간단히 말해서. 귀하의 코드가 정확합니다. 콘솔은 거짓말을 할 수 있습니다.

대체 답변 : 제공 한 코드 샘플에 나와 있지 않은 작업을 수행하고 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관