>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 이에 대한 자세한 분석

JavaScript에서 이에 대한 자세한 분석

不言
不言앞으로
2019-03-05 13:34:452255검색

이 기사는 이에 대한 자세한 분석을 JavaScript로 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

이 방향을 올바르게 찾으려면 몇 가지 공식만 기억하면 됩니다.

1. 함수나 메서드를 어떻게 선언하든 최종적으로 누가 함수나 메서드를 호출하는지, 누가 이 함수나 메서드를 호출하는지에 따라 달라집니다. 그렇다면 이 함수나 메소드에서 이것은 누구일까요?(누가 이것을 클릭하든지)

2. 함수(함수)가 객체에 바인딩되어 있지 않은 한 실행 시간을 보세요. , 이것은 창입니다.

3.ES6, 화살표 함수의 this는 컨텍스트에서 this에 바인딩됩니다. 이제부터는 누구든지 항상 그 사람이 됩니다

1. 일반 함수에서는 This입니다. 전역 함수는 창 개체에 A 메서드가 추가된 것과 동일하므로 5행에서 환영 함수를 호출하는 것은 본질적으로 6행에서 환영 함수를 호출하는 것과 동일하므로 궁극적으로 환영 함수는 창 개체에 의해 호출됩니다. Welcome 함수 내부는 window 객체를 가리킵니다.

실행 결과는 window, window입니다.

2 이것은 객체로서의 메소드에서

sayHi 메소드가 obj 객체에 의해 호출되므로 sayHi 메소드는 obj 객체를 가리킵니다. 따라서 출력은 obj 객체의 name 값입니다. 결과는 다음과 같습니다.

3. 이것은 생성자에서

(1)을 직접 호출합니다.

Line 3, cat1 함수 호출 new 키워드는 사용되지 않으므로 창을 클릭할 때 cat 함수가 호출된다는 의미이므로 Student 함수에서 이것은 window이므로 1행과 2행은 이름과 window에 age 속성을 부여하고 값은 각각 Lulu와 12입니다. 그리고 return 키워드가 함수 내부에 기록되지 않으면 기본 반환 값은 정의되지 않습니다. 따라서 cat1은 정의되지 않은 값을 받습니다.

전체 출력 결과는 다음과 같습니다

(2) 새로운 호출 사용 생성자

new 키워드는 객체를 생성하고 생성자에서 이 객체를 가리키며 자동으로 이 객체를 반환합니다. 코드의 세 번째 줄인 cat1은 생성된 새 키워드가 될 것이며 반환된 개체는 1번 줄과 2번 줄에서 이 개체에 추가되었습니다.

따라서 위 코드의 실행 결과는 다음과 같습니다.

4. 함수 가리키는 대상에서 this의 기본값을 수정합니다.

call, apply, bin

4.1.call();

구문: 함수 이름.call(누가 이는 함수 내부, 매개변수 1, 매개변수 2를 가리킵니다....)

4.2.apply();

구문: ​​함수 이름.apply(이 항목에 대한 새 포인터, 배열 또는 의사 배열);

출력 결과는 다음과 같습니다.

apply()와 call()의 출력 결과는 동일합니다. 차이점은 apply()에 2개의 매개변수만 있다는 것입니다. , 두 번째 매개변수는 배열 또는 의사 배열입니다. 호출되면 두 번째 매개변수(배열 또는 의사 배열)의 요소가 호출된 함수의 형식 매개변수에 순차적으로 할당됩니다.

해당 조건, 매개변수의 양이 명확하게 알려진 경우 호출을 사용하세요. 확실하지 않은 경우 적용을 사용한 다음 매개변수를 배열에 푸시하고 전달하세요.

4.3.bind();

bind() 메소드는 이 클릭 이벤트가 호출되도록 바인딩되면 해당 this 키워드가 전달된 값으로 설정됩니다(여기서는 전달된 매개변수 참조).

구문: ​​함수 이름.bind(이것의 새 포인터, 매개변수를 쓸지 여부);

bind()를 사용하여 getSum() 함수를 호출합니다. 그러나 getSum()은 이때 함수는 실행되지 않고 getSum() 함수와 완전히 동일한 함수 본문이 반환되지만 이는 obj 객체로 수정되었습니다. 이 함수는 새로 선언된 변수로 전달됩니다. 일반적으로 실제 매개변수는 이를 수정한 후에 전송됩니다.

JavaScript의 함수(일반 함수, 생성자)는 본질적으로 Function() 생성자에 의해 인스턴스화되는 객체이며 호출, 적용 및 바인딩의 세 가지 메서드는 모두 Function.prototype 프로토타입에 정의되어 있습니다. JavaScript의 모든 함수는 이 세 가지 메서드를 클릭할 수 있습니다.

5.컨텍스트 호출 모드 세부 사항에 주의하세요.

5.1 함수 컨텍스트 모드를 사용하여 함수를 호출하는 경우 첫 번째 매개 변수는 개체를 가리키지 않습니다. 그러나 기본 데이터 유형의 값을 가리키는 경우, 함수의 이것이 이 유형의 값을 가리킵니까? 코드는 다음과 같습니다.

5.2 컨텍스트 모드를 사용하여 호출되는 함수, 수정된 함수는

6. 함수 컨텍스트 호출 모드의 사용 시나리오

6.1 요소는 모두 정수 배열의 최대값 찾기

6.2 의사 배열을 실제 배열로 변환

6.3 생성자를 빌려 상속

6.4 데이터 유형 감지

위 내용은 JavaScript에서 이에 대한 자세한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제