第一:在全域性環境中或者呼叫普通函式的時候 this 永遠指向window console.log(this === window) 為true
第二:在建構函式中呼叫this,this指向new出來的物件
finction obj ()
var func = new obj();
console.log(func.x) //10
在上述中如果函式作為建構函式使用,其中的this就代表new出來的物件 但是如果直接呼叫上述函式 那麼這時就變成了普通函式的呼叫,這時this的指向就指向了windowfunction 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...