DOJO API翻訳または解読-dojo/uベース/lang--hich()
4075 ワード
hich()関数
hich()は関数で、与えられた上下のいずれかの実行関数を実行します.hichは関数を制御してどのように実行するかを許可します.非同期操作でよく働きます.
私たちはよくこのようなコードを書きます.簡単な例:
hich()は関数で、与えられた上下のいずれかの実行関数を実行します.hichは関数を制御してどのように実行するかを許可します.非同期操作でよく働きます.
私たちはよくこのようなコードを書きます.
require(["dojo/on"], function(on){
var processEvent = function(e){
this.something = "else";
};
on(something, "click", processEvent);
});
そのエラーの原因は解析できない変数についてです.なぜなら、上記のような非同期コールバック関数のようなアプリケーションシーンは、コードが実行されている間にコンテキストが変化するからです.コンテキスト環境を実行するのは最初に提供されたオブジェクトではなく、外部オブジェクト(onのコールバック関数)を指しています.この問題を解決するために、hich()を使ってprocessEventを強制することができます.この時点で「this」が指すコンテキストで実行します.以下のとおりですrequire(["dojo/on", "dojo/_base/lang"], function(on, lang){
var processEvent = function(e){
this.something = "else";
};
on(something, "click", lang.hitch(this, processEvent));
});
(ブロガー、このような文脈の変化による問題は、hich()で解決できます.thisを使う時は、文脈の変化によってエラーが発生するかどうかを分析します.)require(["dojo/_base/lang"], function(lang){
var myObj = {
foo: "bar"
};
var func = lang.hitch(myObj, function(){
console.log(this.foo);
});
func();
});
上のコードはバーが印刷に成功します.したがって、関数consolie.logs(this.foo)を実行するとき、thisはmybjを指します.関数を呼び出すと、コンテキストを実行する方法が与えられます.require(["dojo/_base/lang"], function(lang){
var myObj = {
foo: "bar",
method: function(someArg){
console.log(this.foo);
}
};
var func = lang.hitch(myObj, "method");
func();
});
また、関数実行にパラメータが必要な場合は、以下のようになります.require(["dojo/_base/lang"], function(lang){
var myObj = {
foo: "bar",
method: function(someArg){
console.log(someArg + " " + this.foo);
}
};
var func = lang.hitch(myObj, "method", "baz");
func();
});
自動回転http://www.cnblogs.com/ProgrammerZhong/p/5825324.html