導航:首頁 > 編程語言 > js匿名函數this

js匿名函數this

發布時間:2022-01-19 22:54:11

1. javascript 匿名函數中this為什麼是window對象

this

含義:表示函數的所有者或作用域。JavaScript與this相關的難題是,不能保證對函數應用那個作用域?

問題:

js">window.onload=function(){
window.name="window";
/*
*字面值對象actionScope方法:
*myScope():它在控制台輸出"name:"+this.name,其
*屬性insideScope在控制台輸出"insidename:"+this.name
*/
varactionScope={
name:"jjjaiyy",
myScope:function(){
console.log("name:"+this.name);//name:jjjaiyy
insideScope=function(){
console.log("insidename:"+this.name);//insidename:window
};
insideScope();//執行
}
};
actionScope.myScope();
}

問題來了?(匿名函數中this為什麼是window對象)

因為嵌套函數(insideScope()) 與 包圍對象的內部函數(myScope() )的執行環境分離開了,並且所有無作用域的函數(只有全局對象)自動變成窗口對象的屬性。


解決:

使用bind()方法。

myScope:function(){
console.log("name:"+this.name);//name:jjjaiyy
insideScope=function(){
console.log("insidename:"+this.name);//insidename:jjjaiyy
}.bind(this);
insideScope();//執行
}

bind()方法,使用apply()方法把函數綁定到傳遞給對象的對象(將這個方法綁定到父對象中),共享執行環境。

2. 匿名函數的this指向為什麼是window

this在面向對象的編程語言里指的是當前對象。1、在函數中,因為函數不是一個對象,所以在函數內的中的當前對象應該是其父對象,沒有自定義的父對象只能是其根對象Window。2、解釋實例如下:<pre t="code" l="js"><script type="text/javascript">
window.onload=function(){
alert(this);
}
</script>結果彈出的應該為window對象,因為此時函數不是對象,只是一個實踐處理函數,所以this應該為當前對象即window對象。

3. javascript,this,anonymous function能幫忙解釋下這段代碼

javascript是腳本 this是指向 anonymous function 是匿名函數 希望我的回答對你有所幫助,祝你身體健康!

4. javascript 中 匿名函數後面括弧中函數怎麼調用 是什麼意思 (function(){ }(this, function(obj){ }))

它可以解釋成為「匿名函數自調用」,也就是說,定義一個匿名函數,然後馬上調用它(因為它是匿名的,如果不立即調用就獲取不到該函數的引用了)。通常它被應用在一些大型的JS框架中(如上面所說的),因為這個匿名函數的函數體相當於提供一個匿名的名字空間,這樣就不會再與用戶自定義的JS函數、變數、對象發生沖突了。盡管JS沒有顯示地提供命名空間的定義和使用機制,但這種匿名方式卻不失為是一種很好的解決命名空間問題的方法。

所以說,(function(){代碼})()就等於執行了一個函數,只不過它是匿名的而已。如果在這個匿名函數內部想再次調用這個函數,就需要調用constructor屬性了(這是Object中定義的,JS的繼承機制如同Java一樣保證了了所有對象都繼承Object類)。

5. javascript有時為什麼一定要用this如以下例子。

but[i].onclick=function()
{
this.className='aaa'; //這樣寫是對的,this代表了當前的點擊的對象
};

but[i].onclick=function()
{
but[i].className='aaa'; //這樣寫會報錯,TypeError: but[i] is undefined
};

因為在匿名函數內找不到but[i],這是因為在上下文中沒有對but[i]進行聲明,在循環體內簡單修改下代碼

var buts = but[i]; //把but[i]賦值給bugs,那麼在匿名函數內就可以用了
buts.onclick=function()
{
buts.className='aaa';
};

不過裡面用this還是好些,因為用了上面的,那麼如果你有好幾個input框的話,結果只有最後的input的css起作用

6. js 閉包匿名函數內的方法怎樣被外部調用

var a = function(){
this.b = function(){
console.log("我是閉包函數");
}

return this;
}

調用:內容
var test = new a();
test.b();

或者:
a().b();

7. js 中對象與匿名函數的問題

js中apply()方法是函數源的一個屬性point.getX().apply() 這么用的時候,getX() 這是一個執行的函數,返回值是一個數字
p.apply(),p是一個函數

正確寫法應該是point.getX.apply()

8. js函數中匿名函數的this指針指向問題javascript高手請進!!!

匿名函數的this一般都是指向window的,這個不需要分析。

《javascript高級程序設計》這本書里的匿名專函數這一章也有講到,摘屬抄如下:

this對象是在運行時基於函數的執行環境綁定的:在全局函數中,this等於window,而當函數被作為某個對象的方法調用時,this等於那個對象。不過,匿名函數的執行環境具有全局性,因為其this對象通常指向window。

9. js 的匿名函數 它是怎麼調用的 怎麼運作

/*第一種,賦值給變數然後通過變數調用*/
varfun=function(){

};
fun();//調用

/*第二種就是立即執行,就是在匿名函數後邊添加一個括弧*/
(function(){

}());//結構一
function(){

}();//結構二
varfun2=function(){

}();//結構三

方法一適合在任意位置調用,方法二適用於閉包

閱讀全文

與js匿名函數this相關的資料

熱點內容
男主外號叫撒旦的小說 瀏覽:382
導航APK升級文件 瀏覽:216
看未上映電影的網站 瀏覽:693
蘋果解壓有密碼的文件 瀏覽:521
5g視頻網站都有哪些 瀏覽:551
尹美麗還演過什麼 瀏覽:650
抗日奇俠之終極任務演員表 瀏覽:628
電影短片網 瀏覽:646
日本的電影大全免費看中文版 瀏覽:188
一女多男七個世界 瀏覽:733
cad文件怎麼轉換slt文件 瀏覽:948
外語電影翻譯成普通話的網站 瀏覽:381
別克怎麼用原廠電腦編程 瀏覽:125
半月談app是什麼意思 瀏覽:788
廣州正大數據恢復 瀏覽:80
什麼app軟體上買汽車減震器 瀏覽:375
在線免費的網站你懂得 瀏覽:611
linux服務加入開機啟動 瀏覽:115
手機百度app如何上傳文件 瀏覽:672
韓劇電影版 瀏覽:887

友情鏈接