聊聊Function的bind()
bind顧名思義,綁定。
bind()方法會(huì)創(chuàng)建一個(gè)新函數(shù),當(dāng)這個(gè)新函數(shù)被調(diào)用時(shí),它的this值是傳遞給bind()的第一個(gè)參數(shù),它的參數(shù)是bind()的其他參數(shù)和其原本的參數(shù)。
上面這個(gè)定義最后一句有點(diǎn)繞,我們來理一下。
bind()接受無數(shù)個(gè)參數(shù),第一個(gè)參數(shù)是它生成的新函數(shù)的this指向,比如我傳個(gè)window,不管它在何處調(diào)用,這個(gè)新函數(shù)中的this就指向window,這個(gè)新函數(shù)的參數(shù)就是bind()的第二個(gè)、第三個(gè)、第四個(gè)....第n個(gè)參數(shù)加上它原本的參數(shù)。(行吧,我自己都蒙圈了)
我們還是看看栗子比較好理解,舉個(gè)bind()最基本的使用方法:
this.x = 9; var module = { x: 81, getX: function() { return this.x; } }; module.getX(); // 返回 81 var retrieveX = module.getX; retrieveX(); // 返回 9, 在這種情況下,"this"指向全局作用域 //