JavaScript中的this關鍵字使用的四種呼叫模式
阿新 • • 發佈:2019-01-27
this關鍵字
本意:這個、這裡的意思.
在JavaScript中是指每一個方法或函式都會有一個this物件,this物件是方法(或函式)在執行時的那個環境,也可以說是這個函式在那個作用域下執行的
一共有四種呼叫模式:方法呼叫模式(物件屬性模式)、函式呼叫模式(就是普通的函式執行)、構造呼叫模式(應該叫例項上的方法模式更好)和apply呼叫模式。
一、方法呼叫模式
當它為一個物件上的方法的時候,this是當前這個物件
function age() { alert(this); }
var person = new Object();
person.age = age;
這裡的this指向的就是建立的這個person物件
二、函式呼叫模式
當函式並非一個物件的屬性時,那麼它被當做一個函式來呼叫。此模式下this繫結到全域性物件
var a = 1;
function fn() {
console.log( this.a );
}
fn(); // 1
fn函式中的this指定的是全域性物件,全域性物件是window
三、建構函式呼叫模式
在建構函式裡的this是指向這個物件
function Person( age ) {
this.age = age;
}
var person = new Person(15);
console.log(person.age); // 15
四、apply呼叫模式
apply是把一個函式當成另一個物件的方法來呼叫
function age() {
console.log(this.age);
}
function Person() {
this.age = 18;
}
var person = new Person();
age.apply(person); // 18
本意:這個、這裡的意思.
在JavaScript中是指每一個方法或函式都會有一個this物件,this物件是方法(或函式)在執行時的那個環境,也可以說是這個函式在那個作用域下執行的
一共有四種呼叫模式:方法呼叫模式(物件屬性模式)、函式呼叫模式(就是普通的函式執行)、構造呼叫模式(應該叫例項上的方法模式更好)和apply呼叫模式。
一、方法呼叫模式
當它為一個物件上的方法的時候,this是當前這個物件
function age() { alert(this); }
var person = new Object();
person.age = age;
這裡的this指向的就是建立的這個person物件
二、函式呼叫模式
當函式並非一個物件的屬性時,那麼它被當做一個函式來呼叫。此模式下this繫結到全域性物件
var a = 1;
function fn() {
console.log( this.a );
}
fn(); // 1
fn函式中的this指定的是全域性物件,全域性物件是window
三、建構函式呼叫模式
在建構函式裡的this是指向這個物件
function Person( age ) {
this.age = age;
}
var person = new Person(15);
console.log(person.age); // 15
四、apply呼叫模式
apply是把一個函式當成另一個物件的方法來呼叫
function age() {
console.log(this.age);
}
function Person() {
this.age = 18;
}
var person = new Person();
age.apply(person); // 18