摘要:是誰,在函數運行時才能確定,誰調用了函數誰就是,就是調用者例如是是調用了函數,所以函數中的就是調用者是同理什么是全局對象,瀏覽器的全局對象是,中全局對象是在瀏覽器中直接調用一個函數,那么就是調用者是例如是的作用,中函數是一個對象,所以函數可
this 是誰
1,this 在函數運行時才能確定
2,誰調用了函數誰就是 this
3,this 就是調用者
例如
var o1 = { name: "o1", } var o2 = { name: "o2", } o1.hello = function() { console.log("this 是,", this) } o2.hello = function() { console.log("this 是, ", this) } o1.hello() o2.hello()
o1 調用了 hello 函數,所以 hello 函數中的 this 就是 o1(調用者是 o1
o2 同理
1,瀏覽器的全局對象是 window
2,node.js 中全局對象是 global
在瀏覽器中直接調用一個函數,那么 this 就是 window (調用者是 window
例如
var hello = function() { console.log("this 是,", this) } hello()apply call bind 的作用
1,JavaScript 中函數是一個對象,所以函數可以有方法
2,apply call bind 都是函數的方法,用來給函數指定 this
1,apply 接受兩個參數
2,第一個參數為函數里的 this
3,第二個參數為要傳給函數的參數列表,(這個參數列表可以當做是個數組來理解,實際上不是數組
4,apply 會把這個參數列表拆成一個個的參數傳給函數
例如
console.log.apply(console, arguments)
這行代碼把 log 函數的 this 指定為 cosnole.log
var arguments = [1, 2, 3] console.log.apply(console, arguments) // 相當于 console.log(1, 2, 3)call
call 和 apply 類似,區別是 call 只能把參數一個個傳入
例如
console.log.call(console, 1, 2, 3) // 相當于 console.log(1, 2, 3)bind
1,bind 只能返回一個函數讓你調用
2,bind 的第一個參數為函數里的 this
3,bind 還可以有額外的參數
例如
var log = console.log.bind(console, "這里是額外參數") log("hello")
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103149.html
摘要:理解文章中已經比較全面的分析了在中的指向問題,用一句話來總結就是的指向一定是在執行時決定的,指向被調用函數的對象。與和直接執行原函數不同的是,返回的是一個新函數。這個新函數包裹了原函數,并且綁定了的指向為傳入的。 理解 JavaScript this 文章中已經比較全面的分析了 this 在 JavaScript 中的指向問題,用一句話來總結就是:this 的指向一定是在執行時決定的,...
摘要:它們有明確的和成員函數的定義,只有的實例才能調用這個的成員函數。用和調用函數里用和來指定函數調用的,即指針的指向。同樣,對于一個后的函數使用或者,也無法改變它的執行,原理和上面是一樣的。 函數里的this指針 要理解call,apply和bind,那得先知道JavaScript里的this指針。JavaScript里任何函數的執行都有一個上下文(context),也就是JavaScri...
摘要:不能應用下的等方法。首先我們可以通過給目標函數指定作用域來簡單實現方法保存,即調用方法的目標函數考慮到函數柯里化的情況,我們可以構建一個更加健壯的這次的方法可以綁定對象,也支持在綁定的時候傳參。原因是,在中,多次是無效的。 bind 是返回對應函數,便于稍后調用;apply 、call 則是立即調用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:首先我們可以通過給目標函數指定作用域來簡單實現方法保存,即調用方法的目標函數考慮到函數柯里化的情況,我們可以構建一個更加健壯的這次的方法可以綁定對象,也支持在綁定的時候傳參。原因是,在中,多次是無效的。而則會立即執行函數。 bind 是返回對應函數,便于稍后調用;apply 、call 則是立即調用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:如果連續呢結果會是什么結果還是第一個原因是,在中,多次是無效的。更深層次的原因,的實現,相當于使用函數在內部包了一個,第二次相當于再包住第一次故第二次以后的是無法生效的。 this 1.其實js中的this沒那么難理解,當找不到this時記住一句話:誰調我,我就指誰!new 誰指誰 function text1(){ console.log(this); //指wind...
摘要:文章盡量使用大量實例進行講解,它們的使用場景。在嚴格模式下,函數被調用后,里面的默認是后面通過調用函數上的和方法,該變指向,函數里面的指向。利用,可以傳入外層的上下文。同樣適用的還有,里面的對象,它也是一種類數組對象。 call,apply and bind in JavaScript 在ECMAScript中,每個函數都包含兩個繼承而來的方法:apply() 和 call(),這兩個...
閱讀 1339·2021-11-11 16:54
閱讀 2385·2021-09-22 10:51
閱讀 2655·2019-08-30 15:44
閱讀 3206·2019-08-29 17:05
閱讀 1445·2019-08-29 17:01
閱讀 2900·2019-08-29 12:28
閱讀 2471·2019-08-26 13:50
閱讀 1731·2019-08-23 16:47