Javasript self=thisの使い方についての理解
1405 ワード
とぎれとぎれの学歴のnodejsも半年があって、Javascriptについてもゆっくりと理解しています.
最近道爷さんのJavascript Good Partsを见ています.中には関数コールモードがあります.var that=thisという使い方があります.以前自分が会ったことを加えて、自分でまとめてみます.
関数がオブジェクトの属性として保存されている場合、方法と呼びます.一つの方法が呼び出されると、このオブジェクトにthisが紐付けられます.
この言葉について私たちは分かりやすいです.
関数がオブジェクトの属性でない場合は、関数として呼び出されます.
タイプという形 var get=function()
しかし、このような形式はJavascriptの中で、関数が呼び出された時、thisはグローバル変数に結び付けられます.
この特性に対して,道爺は変数を定義し,値をthisとする方法を用いて解決したので,内部関数はその変数を通じてthisにアクセスできる.
つまりthat=this(個人的にはpythonのselfが好きですので、もっと多いのはself=thisを使います.)
最近道爷さんのJavascript Good Partsを见ています.中には関数コールモードがあります.var that=thisという使い方があります.以前自分が会ったことを加えて、自分でまとめてみます.
関数がオブジェクトの属性として保存されている場合、方法と呼びます.一つの方法が呼び出されると、このオブジェクトにthisが紐付けられます.
この言葉について私たちは分かりやすいです.
var value = 1;
var myObject = {
value: 0,
get: function(){
console.log(this.value);
}
};
myObject.get();
上から出力された結果は0で、これはget(this.get)がmyObjectとしての属性であるため、getを呼び出した時、thisはmyObjectに結び付けられています.全体のthisの上ではなくて、さもなくば出力のは1です.関数がオブジェクトの属性でない場合は、関数として呼び出されます.
タイプという形 var get=function()
myObject = {"name" : "me"};
name = 'all';
myObject.double = function(){
var get = function(){
console.log(this.name);
};
get();
};
myObject.double();
以上の出力はallです.私ではなく、Javascriptデザインの一つの特性によって引き起こされました.私達の理解によれば、getの中のthisはdoubleという外部関数を結びつけるべきです.出力は私です.しかし、このような形式はJavascriptの中で、関数が呼び出された時、thisはグローバル変数に結び付けられます.
この特性に対して,道爺は変数を定義し,値をthisとする方法を用いて解決したので,内部関数はその変数を通じてthisにアクセスできる.
つまりthat=this(個人的にはpythonのselfが好きですので、もっと多いのはself=thisを使います.)
myObject = {"name" : "me"};
name = 'all';
myObject.double = function(){
var self = this;
var get = function(){
console.log(self.name);
};
get();
};
myObject.double();
これで、私を出力することができます. ^-^