2016-04-29 43 views
1

我的骨干查看:关键字功能是必要的,下面的代码:

module.exports = Backbone.View.extend({ 
    tagName: 'div', 
    events: { 
    'click #saveReportBtn': '_handleSaveReport', 
    'click #saveQuery': '_handleSaveQuery', 
    'keydown #queryToolbar': '_enter', 
    }, 
    _enter(event) { 
    console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console 
    }, 
... 

有人建议使用:

_enter: function (event) { 
    console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console 
    }, 

但它似乎工作没有功能的关键字,和我的eslint抱怨:

src/myfile.js 
    100:11 warning Missing function expression name func-names 

✖ 1 problem (0 errors, 1 warning) 

有什么遗漏吗? 感谢

回答

0

速记您使用:

_enter(event) { 
    console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console 
    } 

是ES2015(ES6)的简写这就是为什么eslint不抱怨。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions

具体做法是:

注:简写语法使用名为函数来代替匿名函数(如... FOO:函数(){} ...)。

尝试添加一个函数名称给你的任务。 (http://eslint.org/docs/rules/func-names

_enter: function _enter(event) { 
    console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console 
    } 

已经命名的功能,而不是匿名函数与漂浮在调试过程中,更明确的堆栈各地真正帮助跟踪

+0

但为什么_enter(事件){}工作?函数关键字缺失。 – BAE

+0

我相信(可能是错误的)_enter(event){}是我上面发布的函数的简称。 –

+0

看看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions –