jsの中でthisは問題の実例を指して詳しく解説します.
2652 ワード
JSの中で、thisの値はいったい何ですか?
数ヶ月前に、「javascript言語の精髄」を拝見しました.中にはこの問題について、いい説明ができました.
JSでは、thisの値は呼び出しモードに依存しますが、JSでは4中呼び出しモードがあります.方法でモードを呼び出すと、関数がオブジェクトの属性として保存されているとき、方法として呼び出されたときに、thisはオブジェクトを指します. 関数コールモードは、関数がオブジェクトの属性ではない場合、関数として呼び出され、このときのthisはグローバルオブジェクト(window)を指します. コンストラクタ起動モードがnewプレフィックスと結合して呼び出された関数をコンストラクタ関数と呼び、このときのthisはコンストラクタ関数の実例的なオブジェクトを指しています. appy/call呼び出しモードapplyとcall方法は、私たちが調整者の中のthisが誰を指すかを設定することができます.
数ヶ月前に、「javascript言語の精髄」を拝見しました.中にはこの問題について、いい説明ができました.
JSでは、thisの値は呼び出しモードに依存しますが、JSでは4中呼び出しモードがあります.
var obj = {
value: 1,
getValue: function() {
alert(this.value);
}
};
obj.getValue(); // 1, this obj
注意:このモードでは、オブジェクトへのthisのバインディングは、メソッドが呼び出されたときに発生します.window.value = 1;
function getValue() { alert(this.value); }
getValue(); // 1, this window.
function show(val) {
this.value = val;
};
show.prototype.getVal = function() {
alert(this.value);
};
var func = new show(1);
func.getVal(); // 1
alert(func.value) // 1
// , , this func .
var fun = function(str) {
this.status = str;
}
fun.prototype.getStatus = function() {
alert(this.status);
}
var obj = {
status: "loading"
};
fun.prototype.getStatus.apply(obj); // "loading", getStatus this obj