我想一个参数绑定的this
一个名为Sequence
结合作品的功能,问题是超过一个Sequence
覆盖对方,所以我必须用new
这里的问题...用这个新的构造函数绑定一个参数?
//js code
function init(cmd) {
cmd.exec.call(e,Sequence.bind(cmd));
}
例如
init({
exec:function(seq){
seq("a",function(){
console.log(this);// returns init object itself
});
}
});
伟大的作品,但是当我做
//init for js above
...,function(seq) {
seq("a",function(){
console.log ("hello");
},document.getElementById("google"));
});
...,function(seq) {
seq("d",function(){
console.log("goodbye");
});
});
第二个序列运行goodbye
。从来没有第一个,因为它被写了。
序列功能
function Sequence(key, fn, location) {
if (!location) location = document;
var self = this; //object that is bound to Sequence
location.addEventListener("keydown", function sequenceMode(e) {
if(self.waiting)
{
if (keyCodes.literal[key.toUpperCase()] === e.which) {
fn.call(self,e);
self.waiting = false;
this.removeEventListener("keydown", sequenceMode);
}
} else location.removeEventListener("keydown", sequenceMode);
});
}
所以在这里我的问题是我怎么A
了这个属性绑定为对象调用Sequence
或B
我怎么创建的Sequence
一个新的实例,并仍允许用户在函数内部定义?
cmd.call(e,new Sequence().bind(cmd)); //can not call bind from Constructor
所以基本上我需要的用户仍然能够定义参数本身的Sequence
和this
被绑定到调用它的对象。有什么建议么?
编辑
没有得到相同的结果,所以我现在可以俯瞰我的代码, 所以我已经编辑我的实际的JavaScript库中。它现在正在做。
打开开发人员面板以阅读控制台。按ctrl+a
然后b,然后按ctrl+b
按a,不显示任何,所以按b和它的运行ctrl+a
seq功能。
发表一些小提琴,如果可以的话!我无法确切地得到你的问题... – Buzinas
是的,我总是有问题给我的问题。我会得到一个小提琴去 – EasyBB
添加我的实际JavaScript代码的斌。 – EasyBB