0
我要尋找一個JavaScript實現以下要求:的Javascript:Prototype提供接口來調用對象的方法無限
- 原型實現下一個和運行方法。如果下一個被調用,一次迭代函數一次調用。如果運行被調用,一次被無限地調用(通過用戶請求的流產也必須是可能的,但目前沒有反映在源代碼中)。
- 一旦需要一個完成的參數,一旦完成就調用它。
- 一次迭代函數在原型定義,但可以和將孩子兒童覆蓋。
- 無限迭代中運行必須是可行的,因此必須使堆棧丟失(因爲它發生時的功能由setTimeout的叫
我當前的問題與此源代碼:一旦家長調用不是兒童。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>JS test</title>
<script type="text/javascript">
function write(msg) {
var t = document.createTextNode(msg);
var li = document.createElement("li");
li.appendChild(t);
document.querySelector("ul").appendChild(li);
}
var Parent = function() {
var running = 0;
var run = function() {
running = Infinity;
invokeNextIter();
};
var next = function() {
running = 1;
invokeNextIter();
};
var invokeNextIter = function() {
if (running > 0) {
running -= 1;
setTimeout(function() { once(invokeNextIter); }, 1);
}
};
var once = function (done) {
var time = Math.random() * 3 + 1;
write(time + " sec");
setTimeout(done, time * 1000);
};
return {
run: run,
once: once
};
};
var Child = function() {
var once = function (done) {
write("2 sec as always");
setTimeout(done, 2000);
};
var p = new Parent();
return Object.create(p, { once : once });
};
function main() {
var c = new Child();
c.run();
}
</script>
</head>
<body onload="main()">
<ul>
</ul>
</body>
</html>
無法獲得與Function.prototype.bind或該運行相關技術。任何幫助表示讚賞感激
我不能通過構造函數中的return對象提供所有的方法來運行它(但在我的例子中),但你是絕對正確的。你的方法工作並滿足我所要求的。原型繼承的方法是我顯然在尋找的。謝謝! – meisterluk