首頁 >web前端 >js教程 >JavaScript中的this機制_基礎知識

JavaScript中的this機制_基礎知識

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB原創
2016-05-16 15:16:511264瀏覽

JavaScript有自己的一套this機制,在不同情況下,this的指向也不盡相同。

全域範圍

console.log(this); //全局变量

全域範圍使用this指向的是全域變量,瀏覽器環境下就是window。

註:ECMAScript5的strict模式不存在全域變量,這裡的this是undefined。

函數呼叫中

function foo() {
  console.log(this);
}

foo(); //全局变量

函數呼叫中的this也指向全域變數。

註:ECMAScript5的strict模式不存在全域變量,這裡的this是undefined。

物件方法呼叫

var test = {
  foo: function () {
    console.log(this);
  }
}

test.foo(); //test对象

物件方法呼叫中,this指向呼叫者。

var test = {
  foo: function () {
    console.log(this);
  }
}

var test2 = test.foo;
test2(); //全局变量

不過由於this的晚綁定特性,在上例的情況中this將指向全域變量,相當於直接呼叫函數。

這點非常重要,同樣的程式碼段,只有在執行時才能決定this指向

建構子

function Foo() {
  console.log(this);
}

new Foo(); //新创建的对象
console.log(foo); 

在建構子內部,this指向新建立的物件。

明確設定this

function foo(a, b) {
  console.log(this);
}

var bar = {};

foo.apply(bar, [1, 2]); //bar
foo.call(1, 2); //Number对象

使用Function.prototype的call或apply方法是,函數內部this會被設定為傳入的第一個參數。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn