从将传递 jslint 的同一对象中的函数调用另一个函数的正确方法是啥?
Posted
技术标签:
【中文标题】从将传递 jslint 的同一对象中的函数调用另一个函数的正确方法是啥?【英文标题】:What is the proper way to call another function from a function within the same object that will pass jslint?从将传递 jslint 的同一对象中的函数调用另一个函数的正确方法是什么? 【发布时间】:2021-07-10 01:42:54 【问题描述】:从将传递 jslint 的同一对象中的函数调用另一个函数的正确方法是什么?
任何信息将不胜感激!
用于说明目的的简单示例:
(function ()
"use strict";
var myObject =
functionOne: function ()
console.log("functionOne called by functionTwo");
,
functionTwo: function ()
// jslint Error: 'myObject' is out of scope. (out_of_scope_a);
// What is the proper way to call another function inside the same Object that will pass jslint?
myObject.functionOne();
// jslint Error: Unexpected 'this'. (unexpected_a);
// What is the proper way to call another function inside the same Object that will pass jslint?
this.functionOne();
;
myObject.functionTwo();
());
【问题讨论】:
我从您的代码中看到的唯一错误是Unexpected 'this'.
。 myObject.functionOne();
不会导致你描述的错误
this post 中的一些好建议。我会特别关注“告诉 JSLint 闭嘴……或者根本不要使用 JSLint”
是的,我强烈推荐使用更可配置、更少固执、更现代的东西,比如 ESLint。
感谢您的回复。 @CertainPerformance 你让我走上了正确的轨道。我有一个过时的 jslint 版本。最新版本不介意 myObject.functionOne();
【参考方案1】:
添加指令/*jslint devel, this*/
应该可以修复它。选项/指令的完整列表可用@https://www.jslint.com/
/*jslint devel, this*/
(function ()
"use strict";
var myObject =
functionOne: function ()
console.log("functionOne called by functionTwo");
,
functionTwo: function ()
// jslint Error: 'myObject' is out of scope. (out_of_scope_a);
// What is the proper way to call another function inside the
// same Object that will pass jslint?
myObject.functionOne();
// jslint Error: Unexpected 'this'. (unexpected_a);
// What is the proper way to call another function inside the same
// Object that will pass jslint?
this.functionOne();
;
myObject.functionTwo();
());
【讨论】:
没有必要使用this
指令。您很熟悉 Crockford 的批评,即使用 this
使 javascript 代码像 Abbott 和 Costello 短剧! ;^D 按照我的回答重构,您可以跳过该快捷方式——并拥有更易于管理的代码!【参考方案2】:
专业提示:在修复代码时避免使用任何非必要的 jslint 指令,以最大限度地发挥 JSLint 的优势。
JSLint 希望您像这样安排您的代码(不需要this
。尽可能避免使用this
):
/*jslint devel */
(function ()
"use strict";
var myObject;
function functionOneDef()
console.log("functionOne called by functionTwo");
function functionTwoDef()
functionOneDef();
myObject =
functionOne: functionOneDef,
functionTwo: functionTwoDef
;
myObject.functionTwo();
());
【讨论】:
以上是关于从将传递 jslint 的同一对象中的函数调用另一个函数的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章