jshint期望新的“前缀”的function
CSiginIn
, CSignUp
, CTryIt
, CBlocks
都是这样声明的函数
function CSignIn(){//stuff here}
但JSHint说,我错过了“新”的前缀。 我能做些什么来解决这个问题?
它们只是模块模式中的函数。 另外,它要求我删除我已经完成的函数末尾的分号。
var Control = ( function () { /** *Publik */ var publik = function ( page ) { // page 1 initialization if( page == 1 ) { CSignIn(); CSignUp(); CTryIt(); CBlocks(); }
函数示例…
function CTryIt() { // pull elements var tryit_button = document.getElementById( 'tryit_button' ); // initialize access to Model tryit_button.addEventListener( "click", function( ) { new AjaxRequest().invoke( 'ajax_type=ControlTryIt', function( server_response_text ) { new AjaxResponse( server_response_text, 'page_change' ); } ); }, false ); }
如果启用了newcap
, newcap
希望以大写字母开头的函数是构造函数,因此可以用new
关键字来调用。
解决scheme :禁用此选项或重命名您的function。
从文档 :
这个选项需要大写构造函数的名字。 使用
new
操作符的函数大写只是一个约定,可以帮助程序员直观地将构造函数与其他types的函数区分开来,以便在使用this
函数时发现错误。不这样做不会破坏你的代码在任何浏览器或环境中,但是通过阅读代码将会有点困难 – 如果该函数应该被使用或不使用
new
。 这一点很重要,因为如果没有使用new
的函数,它将指向全局对象而不是新对象。function MyConstructor() { console.log(this); } new MyConstructor(); // -> [MyConstructor] MyConstructor(); // -> [DOMWindow]
为了更深入地了解它是如何工作的,请阅读Yehuda Katz的“理解JavaScript函数调用”和“this” 。
菲利克斯·克林已经给了你正确的答案。 为了完整newcap
,我会注意到newcap
默认为true
(文档没有说明,但是你可以在源代码中读到)。 这意味着在newcap: true
选项中删除设置newcap: true
将不会禁用警告:相反,您需要明确设置newcap: false
。
- 检测用window.open打开的窗口的onload事件
- 如何知道一个字体(@ font-face)是否已经被加载?
- jqueryvalidationdynamic表单input无效的插件
- 为什么我不使用Child.prototype = Parent.Prototype而不是Child.prototype = new Parent(); 为JavaScriptinheritance?
- 平滑滚动到div id jQuery
- 使用中点击触发onclick事件
- 为什么内联事件处理程序在现代语义HTML中是一个坏主意?
- AngularJS将数据传递给$ http.get请求
- 使用Prototype Autosizing textarea