改變this指向的操作

2021-09-26 18:57:04 字數 747 閱讀 5239

之前已近介紹過this指向的情況,其實this的指向是可以改變的,有些人就會好奇,那怎麼樣改變this的指向呢?

其實改變this的指向,有三種比較常用的方法。

1:call()的用法:

function.call(呼叫的物件(obj),引數),這個呢是讓obj呼叫這個function方法並執行,引數是以逗號隔開的。

與call()相似,不同的地方是引數,引數必須是陣列或者類陣列。也是會直接執行的。

3:bind()的用法:

bind()與上面兩種就不一樣了,它只是單純的改變函式的執行上下文,並不會馬上執行函式。

var obj = 

function show(a,b)

show(1,2);

//使用call()方法將函式中的this指向變為obj

show.call(obj,1,2);

//強制更改this指向obj,不會立即執行,它會返回乙個新函式,需要主動去執行這個函式

show.bind(obj,1,2)();

其實還有一種方法來改變this的指向,就是使用new關鍵字,構造乙個建構函式,那麼此時的this指向就指向了構造的那個建構函式。

總結:

this指向 改變this指向

常見的this指向 常見的this指向 全域性下的this指向window 函式中的this,誰呼叫指向誰 建構函式中的this指向建構函式的物件 物件中的this預設指向當前物件 事件處理函式中this誰觸發指向誰 指向觸發事件的目標元素 定時器函式,this 指向 window 箭頭函式中沒有t...

this指向 改變this指向

function a a 此處相當於window.a 這僅是我個人的理解 在這個 中我們可以看出在 的結尾是由window來呼叫的函式a,那麼這個時候this指向window,this.user,全域性中沒有user,所以先定義了,但是沒有賦值,所以列印出undefined this指向練習二 va...

改變this指向

實現new完整版 function fn name,age fn.prototype.say function var obj1 newfn 高 18 console.log obj1 obj1 自己模擬 var obj 建立對fn.call obj,gao 19 改變建構函式的this 指向 指向...