1.在普通函式和全域性環境下
this指向window
function
demo()
demo()
console.
log(
this
.x)//10
2.建構函式
建構函式就是函式new出來的物件,所以this指向該物件
function
foo()}
var foo =
newfoo()
;console.
log(foo.x)
;//10
3.物件方法
this指向物件,但是有個小點需要注意:若在物件方法中定義函式,那麼該函式this指向的是window
var obj =
, foo:
function()
f();
}}obj.
foo(
);
4.prototype屬性中function
foo(
)foo.prototype.
getx
=function()
console.
log(
this
.x);
//10
}var foo =
newfoo()
;foo.
getx()
;
在 foo.prototype.getx 函式中,this 指向的 foo 物件。不僅僅如此,即便是在整個原型鏈中,this 代表的也是當前物件的值。
var obj =
function
foo(
) console.
log(
this
.x);
//10
}foo.
call
(obj)
;foo.
(obj)
;foo.
bind
(obj)()
;
6.dom event
在乙個 html dom 事件處理程式裡,this 始終指向這個處理程式所繫結的 html dom 節點:
function
listener()
listener.prototype.
handleclick
=function
(event)
var listener =
newlistener()
;document.
getelementbyid
('foo').
click()
;
7.箭頭函式中的 thisvar obj =
console.
log(
this
.x);
//10}}
}fn()
()()
;}}obj.
foo(
);
關於JS中this的指向問題
例項在方法中,this 指的是所有者物件。單獨的情況下,this 指的是全域性物件。在函式中,this 指的是全域性物件。在函式中,嚴格模式下,this 是 undefined。在事件中,this 指的是接收事件的元素。this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到...
關於js建構函式中this的指向問題
js裡沒有類.建構函式是個函式,this指向的是個物件,this蒙上眼睛指也指不到建構函式去.建構函式的this指向建立的例項物件無疑.要明白這一點,要先弄明白,用new操作符呼叫建構函式的時候都發生了什麼.正好我有個答案是講建構函式的,我這裡原樣搬來 造函式其實和普通函式本質上並無區別,唯一的區別...
JS中this指向問題
解析器在呼叫函式時,每次都會向函式內部傳遞進乙個隱含的引數,這個隱含的引數就是this,this指向的是乙個物件,這個物件我們稱之為函式執行的上下文物件,根據函式的呼叫方式不同,this會指向不同的物件.簡單來說一下函式中this指向問題,1.this是什麼?任何函式本質上都是通過某個物件來呼叫的,...