微信前端面試題 js實現LazyMan

2022-07-10 12:42:12 字數 1623 閱讀 7472

實現乙個lazyman,可以按照以下方式呼叫:

lazyman(「hank」)輸出:

hi! this is hank!

lazyman(「hank」).sleep(10).eat(「dinner」)輸出

hi! this is hank!

//等待10秒..

wake up after 10

eat dinner~

lazyman(「hank」).eat(「dinner」).eat(「supper」)輸出

hi this is hank!

eat dinner~

eat supper~

lazyman(「hank」).sleepfirst(5).eat(「supper」)輸出

//等待5秒

wake up after 5

hi this is hank!

eat supper

以此類推。

大家可以自己嘗試著寫一下,以下是我個人寫的**及分析:

其實是乙個關於js流程控制的問題:

自己手寫了一下,一開始覺得沒什麼難度,寫的時候還是發現了一些問題,不過也順帶複習了一下js基本功,**如下:

function lazyman(name)

function _lazyman(name)

})(name);

this.task.push(fn);

settimeout(function(),0)

//此處用settimeout執行是因為settimeout會在同步執行緒都進行完了之後再執行,如果不用settimeout就會同步觸發,事件還未都放在佇列中,就已經開始執行了

//關於js同步,非同步,事件迴圈等,可以看這篇文章

}_lazyman.prototype=,

sleep:function(time),time)

}})(time);

this.task.push(fn);

return this;

//return this是為了實現鏈式呼叫

},sleepfirst:function(time),time)

}})(time);

this.task.unshift(fn);

return this;

}, eat:function(something)

})(something)

this.task.push(fn);

return this;}}

lazyman("joe").sleepfirst(3000).eat("breakfast").sleep(1000).eat("dinner");

Js前端面試題

1.判斷js型別的方法 1 typof 2 可以判斷出 string boolean undefiend number 3 但是判斷typeof null 時值為object 判斷物件陣列的時候也是object object.prototype.tostring.call 可以判斷出所有型別 arr...

前端面試題 Js

1.原型 原型鏈 建構函式 例項 繼承 原型 proto 原型物件 prototype 用作建構函式中有prototype 原型物件 例項中有 proto 2.有幾種方式可以實現繼承 原型繼承,構造繼承,例項繼承,拷貝繼承,組合繼承,寄生組合繼承,class繼承 3.用原型實現繼承有什麼缺點,如何解...

前端面試題 js實現LazyMan

實現乙個lazyman,可以按照以下方式呼叫 lazyman hank 輸出 hi this is hank lazyman hank sleep 10 eat dinner 輸出 hi this is hank 等待10秒 wake up after 10 eat dinner lazyman h...