Javascript 通行证;这";通过内联事件侦听器隐式地

Javascript 通行证;这";通过内联事件侦听器隐式地,javascript,Javascript,var fn=(函数(){ 返回{ “init”:函数(类名){ //访问否。每次调用函数时,您都会得到一个新值this fn.init('myClass')是对theElement.onmouseover(event)的不同函数调用 您可以使用addEventListener来绑定事件处理程序,而不是使用内部事件属性。您也可以使用call(我知道您说过您不想在内联事件侦听器中传递this,但这可能是唯一的方法)。唯一的其他方法是使用addEventListener,而不是使用内联事件 var

var fn=(函数(){
返回{
“init”:函数(类名){

//访问
否。每次调用函数时,您都会得到一个新值
this

fn.init('myClass')
是对
theElement.onmouseover(event)
的不同函数调用


您可以使用
addEventListener
来绑定事件处理程序,而不是使用内部事件属性。

您也可以使用
call
(我知道您说过您不想在内联事件侦听器中传递
this
,但这可能是唯一的方法)。唯一的其他方法是使用
addEventListener
,而不是使用内联事件

var fn=(函数(){
返回{
“init”:函数(类名){
//注意,我可以在这个函数中使用“this”

//它引用了
右侧,因此即使在
标记的范围内调用了
fn.init
,函数也无法知道它在DOM中的何处被调用?正确。无法找到
变量(或任何其他变量)的值保留在调用当前函数的函数中。但是,这是显式的,而不是问题所要求的隐式的。@Quentin只是指出可以设置
this
的值,但不是隐式的。这是一个有趣的想法。如果您想在所有
a
元素中添加一个事件侦听器,那么
this
sta使用此方法时,每个元素的y值是多少?@esswilly是的,但如果您实际上要对所有
元素执行此操作,则最好动态添加它,因为它是干的。(不要重复您自己的操作-您不想每次都键入
onmouseover=
),我理解。类似
document.getElementsByTagName('a'之类的内容也可以).addEventListener('mouseover',function(e){fn.init.call(this,'myClass');})
是否有效?您可能首先应该重新考虑使用内联事件处理程序。它们……已经过时多年了。也许您正在试图解决一个如果您改变方法甚至不会遇到的问题。