JavaScript中this的指向

2021-08-19 17:32:10 字數 1127 閱讀 2000

第一:在全域性環境中或者呼叫普通函式的時候 this 永遠指向window  console.log(this === window) 為true

第二:在建構函式中呼叫this,this指向new出來的物件

finction obj () 

var func = new obj();

console.log(func.x) //10

在上述中如果函式作為建構函式使用,其中的this就代表new出來的物件 但是如果直接呼叫上述函式 那麼這時就變成了普通函式的呼叫,這時this的指向就指向了window
function obj () 

var f = obj ();

console.log(foo.x) //undefined

第三:在物件方法中使用this 此時this指向該物件
var obj = 

}obj.foo();

如果我們在物件的方法中再定義乙個函式 那麼此時的this指向會是怎樣的呢

var obj = 

foo1()

}}obj.foo()

執行過之後我們可以知道此時的this指向的是window物件 我們可以這樣來理解 雖然foo1是物件的方法中定義的函式,但是他的性質是乙個普通函式 而普通函式的this指向的是window物件

如果想在物件方法中的函式裡面訪問上層作用域中的變數 可以定義乙個地段_this儲存外部this的變數。

如果物件方法中的函式不作為物件的方法被呼叫的時候此時的this也將指向window物件

var obj = 

}var fn = obj.foo;

fn()

obj.foo被賦值給乙個全域性變數 並不是作為obj的乙個屬性被呼叫的 所以此時的this指向的是window物件

第四:建構函式proyotype屬性 在整個原型鏈中this代表的是當前的物件

function foo () 

foo.prototype.func = function ()

var foo = new foo ()

foo.func()

JavaScript中prototype的理解

prototype使我們能夠向物件新增屬性或者方法。語法 object.prototype.name value 2.基於原型的繼承 obj2 和obj3都是函式foo的例項,可以看到每個例項不僅有自己自身的屬性,還具有原型鏈上的x 也就是foo.prototype 3.prototype與原型 通...

javascript中處理時間

var mydate new date mydate.getyear 獲取當前年份 2007 mydate.getfullyear 獲取完整的年份 2007 mydate.getmonth 獲取當前月份 0 11,0代表1月 11 mydate.getdate 獲取當前日 1 31 20 mydat...

javascript中處理時間

var mydate new date mydate.getyear 獲取當前年份 2007 mydate.getfullyear 獲取完整的年份 2007 mydate.getmonth 獲取當前月份 0 11,0代表1月 11 mydate.getdate 獲取當前日 1 31 20 mydat...