Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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 &引用;这";在jQuery回调中使用箭头函数时,关键字的行为不同_Javascript_Arrow Functions - Fatal编程技术网

Javascript &引用;这";在jQuery回调中使用箭头函数时,关键字的行为不同

Javascript &引用;这";在jQuery回调中使用箭头函数时,关键字的行为不同,javascript,arrow-functions,Javascript,Arrow Functions,我有一个包含多行的表,每行上都有一个edit和delete按钮 简而言之,当使用class.edit触发编辑按钮时,会弹出一个表单。除了类名之外,我还包括了一个唯一的id,如id=“edit-32”,其中的数字根据用户单击的行而变化 我试图解决的问题是在破折号之后捕获id属性号。以前,在ES5中,我只是简单地使用thiskeywoard来定位正在单击的当前元素。但是在ES6中,这个keywoard指的是类环境 ES5方法(返回唯一ID) ES6方法(返回未定义) 有没有一种方法可以使箭头函数以与

我有一个包含多行的表,每行上都有一个
edit
delete
按钮

简而言之,当使用class
.edit
触发编辑按钮时,会弹出一个表单。除了类名之外,我还包括了一个唯一的
id
,如
id=“edit-32”
,其中的数字根据用户单击的行而变化

我试图解决的问题是在破折号之后捕获id属性号。以前,在ES5中,我只是简单地使用
this
keywoard来定位正在单击的当前元素。但是在ES6中,
这个
keywoard指的是类环境

ES5方法(返回唯一ID)

ES6方法(返回未定义)


有没有一种方法可以使箭头函数以与ES5类似的方式工作?

在正常函数中,此
解析为调用函数的对象,因此在本例中,
是单击的元素

箭头函数中的
this
不定义自己的
this
,而是使用封闭执行上下文的
this


在这种情况下,它不适用于箭头函数。您必须坚持使用bog标准函数。

这就是箭头函数的用途,也是它们的独特之处。它们不会生成
this
,并且
this
仍然是调用它的上下文中的一个。来自MDN:“箭头函数表达式的语法比函数表达式短,没有自己的this、arguments、super或new.target。这些函数表达式最适合非方法函数,不能用作构造函数。”继续使用
函数
,因为这里不需要
这个
来引用外部上下文。您希望它成为jQuery强制它成为的东西(元素)。如果将来出于某种原因您需要一个箭头函数,并且您也需要元素,
event
被传递到函数中,因此您可以使用
event.target
。谢谢@FrankModica,这个解决方案对于我的方法是可行的。我不知道为什么我的问题被标记为重复。你很好地回答了这个问题,这对我很有效。我知道还有另一种解决方案,使用ES5功能减速不是一种选择。总有工作要做。谢天谢地,我有这方面的知识,否则我会盲从别人的言行。
    //  Open edit form
    $('.edit').click(function(){

        // Return id attribute
        const id = $(this).attr('id'); 

        // print to console
        console.log(id); 
    }); 
    //  Open edit form
    $('.edit').click(() => {

        // Return id attribute
        const id = $(this).attr('id'); 

        // print to console
        console.log(id); 
    });