第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問setInterval里的代碼為什么要用閉包?

請問setInterval里的代碼為什么要用閉包?

手掌心 2018-12-07 10:48:15
代碼如下: function Dog() { this.wow = function() { console.log("Wow"); } this.yelp = function() { this.wow(); } } function MadDog(){ } MadDog.prototype=new Dog(); MadDog.prototype.yelp=function(){ var self=this; setInterval(function(){ self.wow(); },2000); } var test=new MadDog(); test.yelp(); 就是: var self=this; setInterval(function(){ self.wow(); },2000); 部分,為什么要用閉包?
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

setInterval第一個參數(shù)是function類型,支持eval(也就是傳入方法名)。

如果不閉包:var self=this;setInterval(self.wow(),2000);

這就相當于var self=this;self.wow();setInterval(undefined,2000);

就達不到延遲2秒執(zhí)行self.wow();的效果,且還會報錯。

正確寫法:

寫法一:(setInterval的第一個參數(shù)如果不是需要重復調用,此方法更簡潔,且不會造成過多對象污染)

var self=this;
setInterval(
function(){
self.wow();
},
2000);

寫法二:

var self=this;

function a(){
self.wow();
}

setInterval(a,2000);或setInterval('a',2000);

查看完整回答
反對 回復 2018-12-24
  • 3 回答
  • 0 關注
  • 493 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號