關於js中的this指向問題

2021-09-29 23:27:12 字數 1606 閱讀 8960

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.箭頭函式中的 this
var 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是什麼?任何函式本質上都是通過某個物件來呼叫的,...