摘要:基本知識在中屬于經常使用的一個對象。下面將描述一些案例,帶領大家了解。這里并沒有發生你們預想的而是這個例子表明了,的綁定只受到最近的成員影響。需要正常的執行,才能運行。函數綁定運算符是并排的兩個冒號這個提案,現在暫時只有支持。
基本知識
this在JavaScript中屬于經常使用的一個對象。在定義中,在Javascript中this總是指向調用它所在方法的對象,誰發起了調用,this將指向誰。
下面將描述一些案例,帶領大家了解this。
全局情況下的thisfunction test () { console.log(this) } test()
直接輸出了window對象,因為JS在查找的時候,發現this的指向是undefined,那么在JS會將this指向到window上。
"use strict" function test () { console.log(this) } test()
嚴格模式下,JS是不會將this指向到window上,所以輸出是undefined。
調用情況下的thisvar obj = { name:"hero" } function test () { console.log(this) } obj.test = test obj.test()
這個代碼很好的展示了,由誰調用,this就會被指向調用方所在對象。
現在我們來思考一下,這種情況。
var obj = { name:"hero", proxy:{ name:"proxy hero" } } function test () { console.log(this) } obj.proxy.test = test console.log("obj.proxy.test") obj.proxy.test() var _p = obj.proxy console.log("_p.test") _p.test()
這里并沒有發生你們預想的
obj.proxy.test {name: "hero", proxy: {name: "proxy hero", test: ?}} _p.test {name: "proxy hero", test: ?}
而是
obj.proxy.test {name: "proxy hero", test: ?} _p.test {name: "proxy hero", test: ?}
這個例子表明了,this的綁定只受到最近的成員影響。所以,此時的this被綁定在proxy上。
call,apply,bind的thisvar obj = { name:"hero", test (postString) { console.log(this,postString) } } var obj2 = {name:"super hero"} obj.test.call(obj2,"call") obj.test.apply(obj2,["apply"])
call,apply的機制是一樣的,都是直接修改了內部this的指向。唯一的區別是call傳入參數是挨個傳入,apply是傳入一整個參數數組。
var obj = { name:"hero", test (postString) { console.log(this,postString) } } var obj2 = {name:"super hero"} obj.test.bind(obj2)("bind")
bind的機制與其他兩個是不一樣的,通俗的來說,就是bind設置之后,是蓄勢待發。需要正常的執行,才能運行。這在react中經常使用。
在ES6提案中,你還可以使用這種方式進行bind。
// 函數綁定運算符是并排的兩個冒號(::) var k = obj2::obj.test k("::bind")
這個提案,現在暫時只有babel支持。
參考資料https://developer.mozilla.org...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/97159.html
摘要:春招結果五月份了,春招已經接近尾聲,因為到了周五晚上剛好有空,所以簡單地記錄一下自己的春招過程。我的春招從二月初一直持續到四月底,截止今天,已經斬獲唯品會電商前端研發部大數據與威脅分析事業部京東精銳暑假實習生的騰訊的是早上打過來的。 春招結果 五月份了,春招已經接近尾聲,因為到了周五晚上剛好有空,所以簡單地記錄一下自己的春招過程。我的春招從二月初一直持續到四月底,截止今天,已經斬獲唯品...
閱讀 2650·2023-04-26 02:17
閱讀 1625·2021-11-24 09:39
閱讀 1085·2021-11-18 13:13
閱讀 2663·2021-09-02 15:11
閱讀 2785·2019-08-30 15:48
閱讀 3415·2019-08-30 14:00
閱讀 2448·2019-08-29 13:43
閱讀 667·2019-08-29 13:07