導航:首頁 > 編程語言 > 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相關的資料

熱點內容
編程程序怎麼轉到plc上 瀏覽:807
文件名沖突但是找不到 瀏覽:261
上海瑞金醫院app下載 瀏覽:998
qq群里的機器人買武器 瀏覽:428
捕魚達人歷史版本 瀏覽:73
mp4視頻文件解密軟體 瀏覽:62
多軸編程哪個軟體最方便 瀏覽:27
老平板哪個是顯示屏數據線插座 瀏覽:849
5sing上傳音頻文件格式 瀏覽:171
win10輸入文件滑鼠右鍵異常 瀏覽:634
聽幼兒故事用什麼app 瀏覽:514
iphone修改音頻文件名 瀏覽:53
國家氣象站點數據在哪裡下載 瀏覽:342
網路設置的網站 瀏覽:914
手機測量放樣怎麼導數據和線型 瀏覽:648
企業展示型網站源碼 瀏覽:781
易花花app哪裡下載 瀏覽:323
外國程序員職業生涯長 瀏覽:709
看理想app怎麼注銷賬號 瀏覽:545
數控銑床加工手工編程的步驟有哪些 瀏覽:411

友情鏈接