考慮下面的代碼,我們可以看到,閉包幫助包含的變量的值其範圍內:鑑於JavaScript已關閉,此關鍵字的用途究竟是什麼?
var f = new Foo('jim','jam');
var b = new Bar('saul','paul');
var bz = new Baz();
function Foo(jim,jam){
this.jim = jim;
this.jam = jam;
function log(){
console.log('jim:',jim,'jam:',jam);
}
return log;
}
function Bar(jim,jam){
function log(){
console.log('jim:',jim,'jam:',jam);
}
return log;
}
function Baz(jim,jam){
this.jim = 'bark';
this.jam = 'catch';
function log(){
console.log('jim:',this.jim,'jam:',this.jam);
}
return log;
}
f();
b();
bz();
那麼,究竟是什麼「this
」在JavaScript中則關鍵字的目的是什麼?它何時變得有必要?
了'this'關鍵字允許一個變量傳遞到函數的範圍沒有它在功能參數。所以如果我試圖在工廠中引用窗口並且窗口不可用,我可以調用我的函數,如'myClass ['myfunction']。call(window,args);'有效地傳遞窗口。 – r3wt
有點難以分辨究竟是什麼讓你感到困惑。局部變量範圍和閉包以及對象上下文之間確實沒有多少共同之處。 – Pointy
@Points重疊是似乎通過從外部函數返回一個內部函數,您可以引用這些變量,就好像它們是實例變量 –