this指向問題

1515 ワード

問題を指す
this指向
 湖南省にある地名 関数プリコンパイル中、thisはwindowを指します.
関数でthisを定義します.
function test() {
	
console.log(this);
	
}

test();
コンソール出力
湖南省にある地名 グローバルスコープでは、thisはwindowを指します.
コンソールに直接出力する
湖南省にある地名 callとapplyは運転時のthisの方向を変えることができます.
具体的にブログのcallとappyを見ます.
湖南省にある地名 thisを呼び出した人は、誰を指しますか?

	
var test = {
	
	a : function (){ 
		
	console.log(this.name);
		
	},
	
	name : '   '
	
}

test.a();

testはthisを呼び出しますので、testを指して、最後に墨白を出力します.
this練習問題

	
var name = '222';

var a = {
	
	name : '111',
	
	say : function () {
		
	console.log(this.name);
		
	}
	
}

var fun = a.say;     
//a.say        fun

fun(); 
//fun       
//function () {console.log(this.name)}
//   this.name    window,         '222'

a.say(); 
//  a   this,      a,  '111'

var b = {
	
	name : '333',
	
	say : function(fun) {
		
		fun(); 
		
	}
	
}

b.say(a.say);
//...   

b.say = a.say;

b.say();
//b  say         function () {console.log(this.name)}
//    b  ,   b  this,    '333'

b.say(a.say)はパラメータを参照して実行します.
function () {
		
console.log(this.name);
		
	}
シミュレーション
var b = {
	
	name : '333',
	
	say : function(fun) {
		
		(function () {
		
        console.log(this.name);
		
	})(); 
		
	}
	
}
参照を実行するために使用されていますので、参照後はすぐに実行される関数です.
実行するthisは誰に呼び出されていませんので、グローバルに向けて出力'222'を指します.