日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS中改变this指向的两种方法

發布時間:2023/12/20 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS中改变this指向的两种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JS中改變this指向的兩種方法

this

this是javascript的一個關鍵字,隨著函數使用場合不同,this的值會發生變化。但是總有一個原則,那就是this指的是調用函數的那個對象。
this一般指向的是當前被調用者,但也可以通過其它方式來改變它的指向,下面將介紹兩種改變this指向的方式:

1.call()

call(thisObj[, arg1[, arg2[, …]]])
第一個參數就是要更改this指向的對象,為必選參數; 之后的參數要根據調用的函數是否需要傳入參數(為可選的)
例:

var name = 'hanmeimei';function fn() {console.log(this.name);//此時this指向的是window中的name,打印的是hanmeimei}fn();//hanmeimeivar obj = {name: "lilei",fn: function () {console.log(name);}}obj.fn();//此時還是指向的是window中的name 還是hanmeimeifn.call(obj);//將this的指向改為obj中的name 打印的是lilei

call()的傳參
例:

var name = 'hanmeimei';function fn(x, y) {console.log(this.name, x, y);};var obj = {name: 'lilei',say: function () {console.log(name);}}say.call(obj, 'one', 'two');//打印lilei one two 使用call()將參數x,y改成了one two

2.apply()

apply(thisObj[,argArray])
和call()同樣第一個參數就是要更改this指向的對象,為必選參數; 之后的參數要根據調用的函數是否需要傳入參數(為可選的)。apply的作用和call一樣,不同的是傳參的形式。apply需要以數組的形式傳遞參數
例:
appl()的傳參

var name = 'hanmeimei';function fn(x, y) {console.log(this.name, x, y);};var obj = {name: 'lilei',say: function () {console.log(name);}}say.apply(obj, ['one', 'two']);//打印lilei one two 使用appl()將參數x,y改成了one two

以上就是對于改變this指向的兩種方法。

總結

以上是生活随笔為你收集整理的JS中改变this指向的两种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。