1. 程式人生 > >JS-- this

JS-- this

this簡介

  this是JS中很重要的一個關鍵字,它總是指向一個物件,

  而這個物件是在執行時基於函式的執行環境動態繫結的。

 

this指向分類

  作為普通函式呼叫

  作為建構函式呼叫

  作為物件的方法呼叫

  call和apply呼叫

 

  作為普通函式呼叫

    當函式以普通函式的方式呼叫時,函式內的this在非嚴格模式下指向window,在嚴格模式下指向undefined

var name = “global”;
var person = {
    name: "tom",
    sayName: function
() { console.log(this.name); } } var printName = person.sayName; printName(); //global

     如上程式碼是以普通函式的方式呼叫函式

 

  作為建構函式呼叫

    當函式通過new呼叫時,即以建構函式的方式呼叫,函式會返回一個物件,函式內部的this指向這個返回的物件

function Person (name) {
    this.name = name;  
   console.log(this);   }

var person = new Persosn("tom"); //{name: "tom"}

 

  

  作為物件的方法呼叫

    當函式作為某個物件的屬性時,函式內部的this指向這個物件

var person = {
    name: "tom",
    sayName: function () {
        console.log(this.name);
    }        
}

persosn.sayName(); //"tom"

 

  

  call和apply呼叫

    通過call,apply的方式呼叫函式,可以動態的改變傳入函式中的this指向

var sayName = function () {
  console.log(this.name);
}

var person1 = {
  name: "tom"
}
var person2 = {
  name; "lily"
}

sayName.call(person1); //"tome"
sayName.call(person2); //"lily"