Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用按钮单击函数时保留该类_Javascript_Jquery_Ecmascript 6 - Fatal编程技术网

Javascript 调用按钮单击函数时保留该类

Javascript 调用按钮单击函数时保留该类,javascript,jquery,ecmascript-6,Javascript,Jquery,Ecmascript 6,当从按钮输入单击功能时,是否有方法保持类此 例如: class MyClass extends FooClass{ constructor (obj) { super (obj) this.obj= obj; $("#someButton").click(this.foo); } foo(){ this.obj; // undefined because this is now #someButton and not MyClass }

当从按钮输入单击功能时,是否有方法保持类

例如:

class MyClass extends FooClass{

  constructor (obj) {

    super (obj)

    this.obj= obj;

    $("#someButton").click(this.foo);
  }

  foo(){
    this.obj; // undefined because this is now #someButton and not MyClass 
  }

但是我想在
foo()
中访问
this.obj
,您需要绑定
foo

$("#someButton").click(this.foo.bind(this));
或者使用箭头功能

$("#someButton").click(() => this.foo());

您需要绑定
foo

$("#someButton").click(this.foo.bind(this));
或者使用箭头功能

$("#someButton").click(() => this.foo());

为什么不为函数foo定义参数:

$(“#someButton”)。单击(函数(){
foo(obj);
});
foo(obj){
//与obj合作。。。

}
为什么不为函数foo定义参数:

$(“#someButton”)。单击(函数(){
foo(obj);
});
foo(obj){
//与obj合作。。。

}
就是这样。这两种方法之间有区别吗?第二个只是调用函数?那么为什么这个.foo不起作用呢?
bind
使用有界上下文创建新函数,这是在回调中保留上下文的ES5方法<代码>()=>blah创建了新的箭头函数,并在ES201Somthing中引入。它们在某些方面是不同的,但在这种情况下应该是“相同的”“为什么这个.foo不起作用?”
()=>body
创建新的箭头函数
this.foo
只需访问
foo
w/o调用即可。所以你需要
这个.foo()
来完成它。这两种方法之间有区别吗?第二个只是调用函数?那么为什么这个.foo不起作用呢?
bind
使用有界上下文创建新函数,这是在回调中保留上下文的ES5方法<代码>()=>blah创建了新的箭头函数,并在ES201Somthing中引入。它们在某些方面是不同的,但在这种情况下应该是“相同的”“为什么这个.foo不起作用?”
()=>body
创建新的箭头函数
this.foo
只需访问
foo
w/o调用即可。所以你需要
this.foo()
他如何访问
foo
?他如何访问
foo