1. 함수 개체와 함수 포인터
함수는 실제로 실행 가능한 개체이며, 함수 개체에 액세스하는 모든 방법은 함수 포인터입니다.
어떤 방법을 사용하든 상관없습니다
var a=new Function(...)
function a(...){...}
var a=function(...) {...}
얻은 함수 이름 a는 함수에 대한 포인터입니다. var b=a를 사용하여 이에 대한 다른 포인터를 만들 수 있습니다.
하지만 동일한 기능을 가리킵니다. 함수 이름은 포인터이므로 매개변수로 전달할 수 있습니다. 함수 포인터에 작용하는
() 연산자는 해당 함수를 실행하고 물론 매개변수를 전달합니다.
2. 함수 직접량(함수 리터럴 수량)
사실 함수 직접량이라는 용어는 정확하지 않지만, 일부 사용법을 대중적으로 설명할 수 있습니다.
125 "좋아요" 변수 이름 없이 코드에서 직접 수량을 사용할 수 있습니다. 함수는 유사한 사용법을 갖습니다.
function(){...}은 함수 포인터의 값을 나타냅니다. function(){... }
그런 다음 (function(){...})()는 a=function(){...} 함수를 실행하고 이 포인터의 복사본을 만듭니다
3.
함수 개체는 개체 개체에서 상속됩니다.
이것이 제가 찾은 전부입니다.
f.apply(thisValue, argArray); // thisValue 개체에서 실행합니다. 매개변수는 배열 argArray에서 제공됩니다.
f.call(thisValue); // thisValue 개체에서 실행합니다. 매개변수를 사용하려면
f를 따르세요. .prototype; // 프로토타입은 매우 일반적이며 이전에는 사용되지 않았습니다.
f.length;//매개변수 목록의 길이
f.hasOwnProperty(propertyName);//Object에서 상속된 메서드, 객체에 지정된 속성이 있는지 확인
f.propertyIsEnumerable( propertyName); //Object에서 상속된 메서드, 지정된 속성을 for in으로 열거할 수 있는지 확인(firefox의 프로토타입을 제외하고 다른 속성은 열거할 수 없음)
f.toLocaleString();//Object에서 상속된 메서드, 문자열로 변환
f.toString();//Object에서 상속된 메서드, 문자열로 변환 document.write 등의 경고 시 자동 호출
f.valueOf();//Object에서 상속된 메서드, 평가, 객체가 산술 연산을 수행할 때 기본값이 toString
인 경우 자동으로 호출됩니다.
3. 자바스크립트 함수가 액세스할 수 있는 범위
자바스크립트 함수가 액세스할 수 있는 리소스는 무엇인가요? 이는 함수 범위, 이 포인터, 매개변수의 세 부분으로 구성됩니다. 또한 함수는 어떤 리소스에도 액세스할 수 없습니다.
함수를 더 명확하게 이해하려면 함수에 세 가지 매개변수 세트가 있다고 상상해야 합니다.
첫 번째 세트는 범위로 정의 시 결정되며 매개변수의 위치에 따라 결정됩니다. 함수 정의는 일시적으로 외부 범위라고 하며 함수 정의에서 액세스할 수 있는 변수이며 함수에 대한 포인터가 전달되는 위치에 관계없이 함수 내에서도 액세스할 수 있습니다. 이것은 함수가 호출될 때 결정되는 것입니다.
함수가 ()로 호출되면 기본적으로 함수가 속한 함수를 가리킵니다. Object: 함수가 객체의 멤버인 경우 this는 다음을 가리킵니다. object, 그렇지 않으면 전역 개체(대부분의 경우 window)를 가리킵니다.
Apply 또는 call로 함수를 호출하면 지정된 this 값을 가리킵니다.
세 번째 그룹은 언제 결정되는 매개 변수입니다. 함수가 호출됩니다. 매개변수 목록에 더 이상 존재하지 않는 매개변수는
인수를 사용하여 액세스할 수 있습니다.
범위 외부에 액세스할 수 있으면 각 실행은 새로운 범위(클로저)를 생성합니다.
이 범위 외부의 코드는 이 범위의 변수에 액세스할 수 없습니다. 이 범위 내의 코드는 이 범위와 이 함수에 액세스할 수 있습니다. 정의.
교차 범위 액세스는 포인터를 통해서만 가능합니다. js의 객체는 포인터 유형입니다.
특정 범위에 대한 포인터를 얻으려면 이 범위에서 포인터를 전달해야 합니다. 즉, 이 범위의 포인터 유형 변수의 값을 다른 범위의 변수에 할당합니다.
언급한 대로 위 함수에서 접근할 수 있는 리소스에는 이러한 외부 범위 매개변수가 포함되어 있으므로 다른 범위의 변수도 이 방식으로 접근할 수 있습니다.
아주 BT 예시