再会!
几天前,我开始编写自己的基本 JavaScript 库供个人使用和分发,但我在使用其中一种方法时遇到了问题,特别是bind()。
在方法本身中,this指的是库、对象。
我去谷歌找到了function.call(),但它并没有按照我计划的方式工作——它只是执行了这个函数。
如果您看一下另一种方法each(),您会发现它使用call()来传递值。
我还尝试了以下方法:
f.arguments[0]=this;
我的控制台抛出一个错误,说它无法读取“未定义”的“0”。
我希望能够通过这个(引用库——不是窗口)在事件监听器中使用它。
您可以从这个 JSFiddle的 JavaScript 的第 195 行开始看到它。
这里也是:
bind:function(e,f){
if(e.indexOf("on")==0){
e=e.replace("on","");
}
if(typeof f==='function'){
/*Right now, 'this' refers to the library
How can I pass the library to the upcoming eventListener?
*/
//f=f(this); doesn't work
//f.call(this); //doesn't work
//this.target refers to the HTMLElement Object itself, which we are adding the eventListener to
//the outcome I'm looking for is something like this:
/*$('h3').which(0).bind(function({
this.css("color:red");
});*/
//(which() defines which H3 element we're dealing with
//bind is to add an event listener
this.target.addEventListener(e,f,false)
}
return this;
},
非常感谢您的帮助,贡献者!