며칠 전 인터뷰에서 이 방법을 사용했는데, 면접관이 제 이해가 좀 틀렸다고 하더군요. 제가 돌아와서 책과 블로그를 몇 번 읽어보고 테스트를 해보니 제 이해가 정말 틀렸다는 걸 알게 됐어요. >
1. 전역변수은 가장 일반적으로 사용되는 함수로, 실제로 전역 변수인
에서 호출됩니다.
var value="0"; function mei(){ var value="1"; console.log(this.value); //0 console.log(value); //1 } mei();
2.생성자
이것은 생성자에서 더 친숙한 사용법입니다. 새 개체를 만든 후에는 새 개체를 가리킵니다.
var value="window"; function mei(){ this.value=1; this.show=function(){ console.log(this.value) } } var m=new mei(); console.log(m.value); //1 m.show(); //1
3.전화상담 및 신청
제가 통화한 예시를 직접 빌려서 블로그에 신청하세요
var p="456"; function f1(){ this.p="123"; } function f2() { console.log(this.p); } f2(); //456 f2.call(f1()); //123 f2.apply(f1()); //123
4. 객체의 메소드로 함수가 호출되었습니다(제가 잘못한 부분입니다)
여러 메소드로 객체를 작성하라는 요청을 받았는데 갑자기 전역 변수를 정의한 후 이를 객체의 메소드에서 호출하는 데 사용했습니다. 나는 이 방법을 거의 사용하지 않기 때문에 창이어야 한다고 말했고, new나 call만이 이 방향을 바꿀 것이라고 생각했고, 그는 그것이 잘못되었다고 말했고, 이제 내가 직접 시도해 보라고 했습니다. , 우편번호가 정말 틀렸어요
var value="father"; function mei(){} mei.value="child"; mei.get=function(){console.log(this.value)}; mei.show=function(){console.log(value)}; mei.get(); //child mei.show(); //father
father는 이렇게 이해합니다. show가 가리키는 함수는 전역 환경에서 정의되어 있으므로 show에서는 값을 찾을 수 없으므로 해당 환경에서 찾습니다. 정의한 다음 글로벌 환경의 가치를 찾습니다. 여기에 오해가 있으면 누군가 지적해 주셨으면 좋겠습니다.