文字对象函数作用域,如何传递函数&第三种情况
Literal object function scope, how to pass function & context to a 3rd
我有这个回调'machine':它被设计为对象字面值。
APC.UTIL.Callback = {
nn: 0,
step: 0,
Myargs: null,
that: null,
internal: function () {
var the_f = that.Myargs[that.step];
if (that.step < that.nn) the_f(that.internal);
else {
the_f();
that.Myargs = null;
}
that.step++;
},
loop: function () {
this.Myargs = arguments;
this.nn = this.Myargs.length - 1, this.step = 0;
that = this;
this.internal();
},
}
我这样使用它:
var F1 = function (loop_back) { ... bla bla ; loop_back(); }
var F2 = function (loop_back) { ... bla bla ; loop_back(); }
var F3 = function (loop_back) { ... bla bla ; loop_back(); }
var F4 = function (loop_back) { ... bla bla ; loop_back(); }
// -------------------------------------------------------
APC.UTIL.Callback.loop(F1,F2,F3,F4);
回调第一次调用自己,内部的。然后F1接收到稍后使用它的函数,并再次调用'internal', F2等....(F1 F2 F3存储在Myargs数组中)
已知的问题…缺少那个或这个(范围)。在第二次调用' that'再次变为空值....
我想要一个干净的解决方案的函数调用。我不想写更多的代码在这些。var F1 = function (loop_back){…咩咩;loop_back ();}正如你所看到的,我只写了loop_back参数作为形参,然后用它来进行回调。
我认为我的情况是特殊的,不同于与范围相关的问题;对象字面量。
任何帮助都会很感激。
您将步进放置在错误的位置,如果在环回调用之后调用它将永远无法到达。
var example = {
nn: 0,
step: 0,
Myargs: null,
that: null,
internal: function () {
var the_f = that.Myargs[that.step];
if (that.step < that.nn) {
that.step++;
the_f(that.internal);
} else {
// ...this method expects a function as a parameter.
the_f(function(){});
that.Myargs = null;
}
// will never be reached
// that.step++;
},
loop: function () {
this.Myargs = arguments;
this.nn = this.Myargs.length - 1, this.step = 0;
that = this;
this.internal();
},
}
var F1 = function (loop_back) { console.log("F1"); loop_back(); }
var F2 = function (loop_back) { console.log("F2"); loop_back(); }
var F3 = function (loop_back) { console.log("F3"); loop_back(); }
var F4 = function (loop_back) { console.log("F4"); loop_back(); }
example.loop(F1, F2, F3, F4);
相关文章:
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 三个不同的角色,三种不同的观点
- 是否有一个JavaScript IDE允许在所有三种浏览器(IE,FF,Chrome)中进行调试
- 如何在同一 html 页面上以三种不同的形式验证同一字段
- 无法识别三种 JS 字体
- CSS z-index/javascript 在三种主要浏览器中的工作方式不同
- if-else语句,该语句使用document.getElementsByClassName和三种可能的场景
- 在JS中这三种声明方法的方式有什么区别吗?
- 三种不同材质和方向光强的js线条
- HTML5 Canvas Circle有三种不同的颜色
- 比较三种插入dom元素的方法以及使用jQuery mobile增强dom元素的方法
- 添加第三种颜色级别的Javascript/JQuery HTML表热图
- 这三种创建数组的方法有什么区别吗?
- 将css更改为onclick链接,有三种不同的样式
- 这三种监听事件的方式的作用域有何不同
- 自我反思问卷:为测验提供三种不同的分数
- 什么'这三种形式的自调用匿名函数之间的区别是什么
- 我想把两种颜色混合成第三种颜色
- 文字对象函数作用域,如何传递函数&第三种情况