前兩天在寫乙個chrome的extensions,因為 content裡和background互動必需要乙個非同步方法實現,如:
複製** **如下:
var test = new class(,
initialize: function(args) , function(options) );
} });
這個this應該是test這個物件,但是**方法裡是空的。難道要把this做引數傳過去,再call回來?還好,mootoolnatknbs裡有個好方法,bind。
複製** **如下:
var test = new class(,
initialize: function(args) , function(options) .bind(this));
} });
這下ok了,繼續寫:
複製** **如下:
var test = new class(,
initialize: function(args) , function(options) else
}.bind(this));
}.bind(tnatknbhis));
}, fun1: function {},
fun2: function {}
});
就算有bind也不容易分清哪個this是什麼了。而真實的**比這個要恐怖的多,有的情況下,我們的確需要this指向其它的變數,而不是這個類。
最常用的解決方法,是這樣:
複製** **如下:
var test = new class(,
initialize: function(args) , function(options) else
});
});
}, fun1: function {},
fun2: function {}
});
我特別定義了乙個_self的變數來代替this,這看起來象什麼?python!
現在終於體會到python的self絕對不是多此一舉。
本文標題: 關於this和self的使用說明
本文位址:
Self和self的區別
所有的trait都定義了乙個隱式的型別self,它指當前實現此介面的型別。rust官方文件當self用作函式的第乙個引數時,它等價於self self。self引數等價於self self。mut self引數等價於self mut self。方法引數中的self是一種語法糖,是方法的接收型別 例如...
OC中self和super的使用
1 self用在物件方法中,self指代的是呼叫當前方法的那個物件,可以呼叫其它物件方法。2 self用在類方法中,self指代的是當前類,可以呼叫其它類方法,不可以呼叫物件方法。3 self修飾例項變數 一般在set方法中使用 用在形參變數和例項變數同名時。例 void setspeed int ...
self 和 this 的用法
在訪問php類中的成員變數或方法時,如果被引用的變數或者方法被宣告成const 定義常量 或者static 宣告靜態 那麼就必須使用操作符 反之如果被引用的變數或者方法沒有被宣告成const或者static,那麼就必須使用操作符 另外,如果從類的內部訪問const或者static變數或者方法,那麼就...