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

JavaScript中的this機制_基礎知識

WBOY
發布: 2016-05-16 15:16:51
原創
1227 人瀏覽過

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會被設定為傳入的第一個參數。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板