최신 웹 개발 튜토리얼
 

JavaScript함수 호출


자바 스크립트 함수는 4 가지 방법으로 호출 할 수 있습니다.

각 방법은 방법에 다른 this 초기화됩니다.


this 키워드

자바 스크립트라는 것은에서 this , 현재의 코드를 "소유"하는 것을 목적으로한다.

의 값 this 함수에 사용되는 경우,이 기능을 "소유"하는 것을 목적으로한다.

참고 this 변수가 아닙니다. 이 키워드입니다. 당신의 값을 변경할 수 없습니다 this .


자바 스크립트 함수를 호출

당신은 이미 "뭔가"를 호출 할 때 자바 스크립트 함수 내부의 코드가 실행됩니다 배웠습니다.

함수가 정의 될 때 함수의 코드가 실행되지 않습니다. 함수가 호출 될 때 실행됩니다.

어떤 사람들은 용어 대신 "함수를 호출"의 "함수를 호출"를 사용합니다.

또한 "기능을 실행" "기능을 시작합니다", "함수에 전화", 또는 말을 아주 일반적이다.

자바 스크립트 함수를 호출하지 않고 호출 할 수 있기 때문에이 튜토리얼에서, 우리는 호출을 사용합니다.


함수로 함수를 호출

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // myFunction(10, 2) will return 20
»그것을 자신을 시도

이 함수는 위의 모든 객체에 속하지 않습니다. 그러나 자바 스크립트 항상 기본 전역 객체가있다.

HTML의 기본 전역 객체는 HTML 페이지 자체이므로, 위의 함수는 HTML 페이지에 "속한다".

브라우저에서 페이지 객체는 브라우저 창입니다. 함수는 상기 자동 윈도우 함수가된다.

myFunction()window.myFunction() 와 동일한 기능입니다 :

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // window.myFunction(10, 2) will also return 20
»그것을 자신을 시도

이것은 일반적인 자바 스크립트 함수를 호출하는 방법,하지만 아주 좋은 방법입니다.
전역 변수, 메서드 또는 기능을 쉽게 전역 객체에 이름 충돌 버그를 만들 수 있습니다.


글로벌 개체

함수가 오너 객체없이 호출 될 때의 값 this 전역 객체가된다.

웹 브라우저에서 전역 객체가 브라우저 창이다.

이 예에서는 값과 윈도우 객체 리턴 this :

function myFunction() {
    return this;
}
myFunction();                // Will return the window object
»그것을 자신을 시도

전역 함수와 같은 함수를 호출 원인 값 this 전역 객체한다.
변수로 창 개체를 사용하여 쉽게 프로그램을 중단 할 수 있습니다.


방법으로 함수를 호출

자바 스크립트에서는 객체 메소드와 같은 기능을 정의 할 수 있습니다.

다음의 예는 객체 (생성 myObject 두 가지 속성 (과), firstName 하고 lastName ) 및 방법 ( fullName )

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // Will return "John Doe"
»그것을 자신을 시도

fullName 방법은 함수이다. 이 함수는 객체에 속한다. myObject 함수의 소유자이다.

라는 것은 this 자바 스크립트 코드를 "소유"하는 것을 목적으로한다. 이 경우의 값 this 있다 myObject .

테스트! 변경 fullName 의 값을 반환하는 방법 this :

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // Will return [object Object] (the owner object)
»그것을 자신을 시도

객체 방법으로 함수를 호출 원인 값 this 오브젝트 자체한다.


함수 생성자와 함수를 호출

함수 호출이 앞에는 경우 new 키워드는 생성자 호출이다.

새 기능을 만들 수 있지만 자바 스크립트 함수는 객체를하기 때문에 실제로 새 개체를 만들 것 같습니다 :

// This is a function constructor:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}

// This creates a new object
var x = new myFunction("John","Doe");
x.firstName;                             // Will return "John"
»그것을 자신을 시도

생성자 호출은 새로운 객체를 생성합니다. 새로운 객체는 생성자의 속성과 메서드를 상속합니다.

this 생성자의 키워드는 값이 없습니다.
의 값 this 함수가 호출 될 때 만든 새 개체 수 있습니다.


함수 방법으로 함수를 호출

자바 스크립트에서 함수는 객체입니다. 자바 스크립트 함수는 속성과 메서드를 가지고있다.

call() 하고 apply() 미리 정의 된 자바 스크립트 함수 방법이다. 두 방법은 함수를 호출하기 위해 사용될 수 있으며, 두 방법은 첫번째 파라미터로 오너 객체를 가져야한다.

function myFunction(a, b) {
    return a * b;
}
myObject = myFunction.call(myObject, 10, 2);     // Will return 20
»그것을 자신을 시도

function myFunction(a, b) {
    return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray);  // Will also return 20
»그것을 자신을 시도

두 방법은 첫 번째 인수로 소유자 객체를 가져 가라. 유일한 차이점은 것입니다 call() 별도로 함수 인수를, 그리고 apply() 배열 함수 인수를.

자바 스크립트 엄격 모드에서, 첫 번째 인자의 값이된다 this 인수 대상이 아니더라도, 호출 된 함수를.

첫 번째 인수의 값이 null 또는 정의되지 않은 경우 "비 엄격한"모드에서는, 그것은 전역 객체로 대체된다.

call() 또는 apply() 하면의 값을 설정할 수 있습니다 this , 기존 개체의 새 방법으로 함수를 호출합니다.