欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于this和self的使用說明

 更新時間:2010年08月01日 17:41:12   作者:  
剛接觸python的時候,最不習慣的事情,就是每個方法都要加一個self。無論Javascript還是C#,都直接一個this搞定,干嘛非要加一個變量self。
前兩天在寫一個chrome的extensions,因為 content里和background交互必需要一個異步方法實現(xiàn),如:
復制代碼 代碼如下:

var Test = new Class({
options: {},
initialize: function(args) {
chrome.extension.sendRequest({ 'type':'options' }, function(options) {
this.options = options;
……
});
}
});

這個this應該是Test這個對象,但是回調方法里是空的。難道要把this做參數傳過去,再call回來?還好,mootools里有個好方法,bind。
復制代碼 代碼如下:

var Test = new Class({
options: {},
initialize: function(args) {
chrome.extension.sendRequest({ 'type':'options' }, function(options) {
this.options = options;
……
}.bind(this));
}
});

這下OK了,繼續(xù)寫:
復制代碼 代碼如下:

var Test = new Class({
options: {},
initialize: function(args) {
chrome.extension.sendRequest({ 'type':'options' }, function(options) {
this.options = options;
$each(this.options, function(o, i) {
if (o == '1') {
this.fun1();
} else {
this.fun2();
}
}.bind(this));
}.bind(this));
},
fun1: function {},
fun2: function {}
});


就算有bind也不容易分清哪個this是什么了。而真實的代碼比這個要恐怖的多,有的情況下,我們的確需要this指向其它的變量,而不是這個類。
最常用的解決方法,是這樣:
復制代碼 代碼如下:

var Test = new Class({
options: {},
initialize: function(args) {
var _self = this;
chrome.extension.sendRequest({ 'type':'options' }, function(options) {
_self.options = options;
$each(_self.options, function(o, i) {
if (o == '1') {
_self.fun1();
} else {
_self.fun2();
}
});
});
},
fun1: function {},
fun2: function {}
});

我特別定義了一個_self的變量來代替this,這看起來象什么?python!
現(xiàn)在終于體會到python的self絕對不是多此一舉。

相關文章

  • Aptos?SDK交互實現(xiàn)過程詳解

    Aptos?SDK交互實現(xiàn)過程詳解

    這篇文章主要為大家介紹了Aptos?SDK交互實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • JS實現(xiàn)時間選擇器

    JS實現(xiàn)時間選擇器

    這篇文章主要為大家詳細介紹了JS實現(xiàn)時間選擇器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript async&await方法中的異常處理方案

    JavaScript async&await方法中的異常處理方案

    在 async/await 方法中,可以使用 try-catch 塊來處理異常,通過使用 try-catch,可以捕獲異步操作中拋出的異常,并在 catch 塊中進行適當的處理,本文給大家詳細介紹了async&await方法中異常如何處理,需要的朋友可以參考下
    2023-08-08
  • 利用JavaScript在網頁實現(xiàn)八數碼啟發(fā)式A*算法動畫效果

    利用JavaScript在網頁實現(xiàn)八數碼啟發(fā)式A*算法動畫效果

    這篇文章主要介紹了利用JavaScript在網頁實現(xiàn)八數碼啟發(fā)式A*算法動畫效果,需要的朋友可以參考下
    2017-04-04
  • 追蹤discord.js中刪除消息的用戶方法實例詳解

    追蹤discord.js中刪除消息的用戶方法實例詳解

    這篇文章主要為大家介紹了如何追蹤discord.js中刪除消息的用戶方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • js電信網通雙線自動選擇技巧

    js電信網通雙線自動選擇技巧

    網站打開的速度快是相當重要的baidu.com不管你是用的什么網絡,都打開的很快
    2008-11-11
  • JavaScript邏輯運算符相關總結

    JavaScript邏輯運算符相關總結

    這篇文章主要介紹了JavaScript邏輯運算符的相關資料,幫助大家更好的理解和學習JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • uniapp自定義驗證碼輸入框并隱藏光標

    uniapp自定義驗證碼輸入框并隱藏光標

    這篇文章主要介紹了uniapp自定義驗證碼輸入框隱藏光標,效果是點擊輸入框喚起鍵盤,藍框就相當于input的光標,驗證碼輸入錯誤或者不符合格式要求會將字體以及邊框改成紅色提示持續(xù)1s然后清空數據,恢復原邊框樣式,需要的朋友可以參考下
    2023-02-02
  • JavaScript如何生成二維數組

    JavaScript如何生成二維數組

    這篇文章主要介紹了JavaScript如何生成二維數組問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Script標簽與訪問HTML頁面詳解

    Script標簽與訪問HTML頁面詳解

    本篇文章主要是對Script標簽與訪問HTML頁面進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01

最新評論