生活コードJavaScript
8670 ワード
this
これは、関数で関数を呼び出すコンテキスト(context)を意味します.
脈絡は状況によって変化するという意味です.
すなわち,関数をどのように呼び出すかでthisが指すオブジェクトが変化する.
関数とオブジェクトの関係がばらばらなJavaScriptでは,両者を結びつける実際の接続点である.
function func() {
if (window === this) {
console.log("window === this");
}
}
func();
// window === this
ここでは、グローバルオブジェクトであるwindowと同じです.メソッド呼び出し
var o = {
func: function () {
if (o === this) { //this와 객체인 o가 같은지
document.write("o === this");
}
},
};
o.func();
//o === this
作成者を呼び出す
var funcThis = null;
function Func() {
funcThis = this;
}
var o1 = Func();
console.log(o1); //undefined
if (funcThis === window) {
document.write("window <br />");
}
var o2 = new Func();
console.log(o2); //Func {}
if (funcThis === o2) {
document.write("o2 <br />");
}
Func()内でif(o2 === this)
を行うと、oオブジェクトが生成される前にfalseとなるapply, call
var o = {}
var p = {}
function func(){
switch(this){
case o:
document.write('o<br />');
break;
case p:
document.write('p<br />');
break;
case window:
document.write('window<br />');
break;
}
}
func(); //this => window
func.apply(o); //this => o를 가리킴
func.apply(p); //this => p를 가리킴
これは所属するオブジェクトを指しますReference
この問題について(生活コードJavaScript), 我々は、より多くの情報をここで見つけました https://velog.io/@ypyp66/생활코딩-javascript-cpfrnsztテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol