이상 한 JS

6727 단어 js
어떤 때 는 JS 가 매우 심오 한 언어 라 는 것 을 알 게 되 었 습 니 다. 저 등 속인 들 이 배 울 수 있 는 것 이 아니 라 private 가 없 으 면 Public 가 말 하지 않 고 Class 도 없 는 것 을 알 게 되 었 습 니 다. 이 세상 은 바로 이 렇 습 니 다. 어떤 것 은 당신 이 반드시 납득 할 필요 도 없고 뿌리 를 갈 라 서 묻 지 않 아 도 됩 니 다. 어떤 때 는 당신 이 받 아들 여야 합 니 다.JS 의 세 계 는 이상 한 세계 입 니 다. 변 수 는 반복 적 으로 정의 할 수 있 습 니 다. this 도 변화 가 많은 것 입 니 다. 함수 도 여러 가지 역할 을 할 수 있 습 니 다. 우 리 는 아래 의 예 에서 출발 하여 답 이 얼마 인지 맞 혀 보 겠 습 니 다.
   function Animal() {

            this.name = 'Animal';



            this.sleep = function (who) {

                alert(who + "   sleep!!");

            }

        }

        function Dog() {

            Animal.call(this);



        }

        function test() {

            var dog = new Dog();

            dog.sleep("dog");

        }

        function ScopeTest() {



            this.Add = function (a, b) {

                fAlert();

                return a + b;

            };



            fAlert = function () {

            alert('bbbb');

            }



            



        }

        var sCope= new ScopeTest();

        alert(sCope.Add(3, 4));



        test();

 
JS 에서 가장 이상 한 것 은 바로 이 this 입 니 다. 저 는 개인 적 으로 C \ # 또는 자바 에서 this 는 항상 현재 의 대상 을 가리 키 기 때 문 이 라 고 생각 합 니 다. JS 중의 this 는 가끔 window 를 가리 키 고 가끔 은 다른 대상 을 가리 키 며 가끔 은 이 this 가 바 뀔 때 가 있 습 니 다. 예 를 들 어 위의 코드 는 call 이라는 함 수 를 사용 한 후에 Animal 안의 this 는 dog 이 되 었 습 니 다.이것 은 디 버 깅 할 때 추적 할 수 있 습 니 다.
JS 의 모든 방법 과 변 수 는 하나의 역할 영역 에 속 합 니 다. 위 에서 언급 한 this 는 이 역할 영역 을 가리 키 는 것 입 니 다. 역할 영역 은 사실은 하나의 범위 이 고 역할 영역 은 실행 할 때 결 정 됩 니 다. JS 에서 함수 가 클래스 와 대상 의 역할 을 하기 때문에 실례 화 되 지 않 을 때 도 실행 할 수 있 습 니 다. new 키 워드 를 사용 하지 않 으 면그러면 함수 중의 this 가 가리 키 는 것 은 window 입 니 다. new 를 사용 하면 상황 이 다 릅 니 다. 작은 부분의 테스트 를 통 해 우 리 는 결론 을 얻 을 수 있 습 니 다.
     var s="Hell0"

        function same() {

             var s="Hello!"

            alert(this.s);

            alert(window.s)

            if (this === window) {

            alert("the same");

            }



    }

    same();

    var fSame = new same();

    

지금 fSame 함수 가 실 행 될 때 this. s 는 undefined 를 팝 업 합 니 다. 왜 함수 내부 에서 정 의 된 var s = "Hell 오!" 의 값 이 아 닙 니까?이것 은 JS 와 관련 이 있 습 니 다. JS 에서 함 수 는 내부 의 var 로 시작 하 는 변수의 값 을 외부 에서 읽 을 수 없 기 때 문 입 니 다. this 를 더 하면 또 다 릅 니 다.
        var s="Hell0"

        function same() {

            this. s="Hello!"

            alert(this.s);

            alert(window.s)

            if (this === window) {

            alert("the same");

            }



    }

      var fSame = new same();

아래 의 이 코드 세 션 의 결 과 는 또 얼마 입 니까?
 
  <script type="text/javascript">

             var name = "liu";

             function callName() {

                 alert(name);

                 var name = "yu";

             }

             callName();

Javascript 은 함수 필드 에 들 어 갈 때 함수 에 필요 한 모든 임시 변 수 를 설명 하 였 습 니 다. 주의 하 세 요. 성명 일 뿐 할당 을 실행 하지 않 았 습 니 다. 모든 변수의 초기 값 은 undefined 이 고 할당 은 실행 할 때 하 는 것 입 니 다. JS 는 순서대로 위 에서 아래로 실 행 됩 니 다. 따라서 이 팝 업 undefined 의 결 과 는 명확 하 게 설명 되 었 습 니 다.
 
 
JS 에서 여러 가지 이상 한 것들 이 저 를 함정 에 빠 뜨 렸 습 니 다. 깊이 이해 하려 면 자신 에 게 몇 개의 함정 을 파 서 뛰 어 들 었 다가 천천히 기어 나 왔 습 니 다. 시 뮬 레이 션 을 통 해 추적 을 통 해 디 버 깅 을 통 해 구름 과 안 개 를 헤 치고 태양 을 볼 수 있 을 것 입 니 다.

좋은 웹페이지 즐겨찾기