eslint/new-cap Style
作用
此规则要求构造函数名称以大写字母开头。
为什么不好?
JavaScript 中的 new 运算符会创建特定类型对象的新实例。 该类型的对象由构造函数表示。 由于构造函数只是普通函数,唯一的定义特征是在调用时使用了 new。 原生 JavaScript 函数以大写字母开头,以区分那些要用作构造函数的函数和不是用作构造函数的函数。 许多风格指南建议遵循此模式,以便更容易确定哪些函数将用作构造函数。
警告: 选项 newIsCapExceptionPattern 和 capIsNewExceptionPattern 是使用 rust regex 语法 实现的。不支持许多 JavaScript 功能(前瞻、后顾...)。
示例
此规则 错误 代码示例:
function foo(arg) {
return Boolean(arg);
}使用默认 { "newIsCap": true } 选项时,此规则 错误 代码示例:
/* new-cap: ["error", { "newIsCap": true }] */
var friend = new person();使用默认 { "newIsCap": true } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "newIsCap": true }] */
var friend = new Person();使用 { "newIsCap": false } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "newIsCap": false }] */
var friend = new person();使用默认 { "capIsNew": true } 选项时,此规则 错误 代码示例:
/* new-cap: ["error", { "capIsNew": true }] */
var colleague = Person();使用默认 { "capIsNew": true } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "capIsNew": true }] */
var colleague = new Person();使用 { "capIsNew": false } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "capIsNew": false }] */
var colleague = Person();使用 { "newIsCapExceptions": ["events"] } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "newIsCapExceptions": ["events"] }] */
var events = require("events");
var emitter = new events();使用 { "newIsCapExceptionPattern": "^person\\.." } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "newIsCapExceptionPattern": "^person\\.." }] */
var friend = new person.acquaintance();
var bestFriend = new person.friend();使用 { "newIsCapExceptionPattern": "\\.bar$" } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "newIsCapExceptionPattern": "\\.bar$" }] */
var friend = new person.bar();使用 { "capIsNewExceptions": ["Person"] } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "capIsNewExceptions": ["Person"] }] */
function foo(arg) {
return Person(arg);
}使用 { "capIsNewExceptionPattern": "^person\\.." } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "capIsNewExceptionPattern": "^person\\.." }] */
var friend = person.Acquaintance();
var bestFriend = person.Friend();使用 { "capIsNewExceptionPattern": "\\.Bar$" } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "capIsNewExceptionPattern": "\\.Bar$" }] */
foo.Bar();使用 { "capIsNewExceptionPattern": "^Foo" } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "capIsNewExceptionPattern": "^Foo" }] */
var x = Foo(42);
var y = Foobar(42);
var z = Foo.Bar(42);属性
使用默认 { "properties": true } 选项时,此规则 错误 代码示例:
/* new-cap: ["error", { "properties": true }] */
var friend = new person.acquaintance();使用默认 { "properties": true } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "properties": true }] */
var friend = new person.Acquaintance();使用 { "properties": false } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "properties": false }] */
var friend = new person.acquaintance();使用默认 { "newIsCap": true } 选项时,此规则 错误 代码示例:
/* new-cap: ["error", { "newIsCap": true }] */
var friend = new person();使用默认 { "newIsCap": true } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "newIsCap": true }] */
var friend = new Person();使用 { "newIsCap": false } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "newIsCap": false }] */
var friend = new person();使用默认 { "capIsNew": true } 选项时,此规则 错误 代码示例:
/* new-cap: ["error", { "capIsNew": true }] */
var colleague = Person();使用默认 { "capIsNew": true } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "capIsNew": true }] */
var colleague = new Person();使用 { "capIsNew": false } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "capIsNew": false }] */
var colleague = Person();使用 { "newIsCapExceptions": ["events"] } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "newIsCapExceptions": ["events"] }] */
var events = require("events");
var emitter = new events();使用 { "newIsCapExceptionPattern": "^person\\.." } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "newIsCapExceptionPattern": "^person\\.." }] */
var friend = new person.acquaintance();
var bestFriend = new person.friend();使用 { "newIsCapExceptionPattern": "\\.bar$" } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "newIsCapExceptionPattern": "\\.bar$" }] */
var friend = new person.bar();使用 { "capIsNewExceptions": ["Person"] } 选项时,此规则其他 正确 代码示例:
::: correct
/* new-cap: ["error", { "capIsNewExceptions": ["Person"] }] */
function foo(arg) {
return Person(arg);
}使用 { "capIsNewExceptionPattern": "^person\\.." } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "capIsNewExceptionPattern": "^person\\.." }] */
var friend = person.Acquaintance();
var bestFriend = person.Friend();使用 { "capIsNewExceptionPattern": "\\.Bar$" } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "capIsNewExceptionPattern": "\\.Bar$" }] */
foo.Bar();使用 { "capIsNewExceptionPattern": "^Foo" } 选项时,此规则其他 正确 代码示例:
/* new-cap: ["error", { "capIsNewExceptionPattern": "^Foo" }] */
var x = Foo(42);
var y = Foobar(42);
var z = Foo.Bar(42);使用默认 { "properties": true } 选项时,此规则 错误 代码示例:
/* new-cap: ["error", { "properties": true }] */
var friend = new person.acquaintance();使用默认 { "properties": true } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "properties": true }] */
var friend = new person.Acquaintance();使用 { "properties": false } 选项时,此规则 正确 代码示例:
/* new-cap: ["error", { "properties": false }] */
var friend = new person.acquaintance();配置
此规则接受具有以下属性的配置对象:
capIsNew
类型:boolean
默认值:true
true 要求所有名称以大写字母开头的函数都必须使用 new 调用。
capIsNewExceptionPattern
类型:string
用于匹配名称以大写字母开头的函数异常的正则表达式模式。
capIsNewExceptions
类型:string[]
默认值:[]
忽略名称以大写字母开头的函数的异常。
newIsCap
类型:boolean
默认值:true
true 要求所有构造函数名称以大写字母开头,例如 new Person()。
newIsCapExceptionPattern
类型:string
用于匹配构造函数名称以大写字母开头的异常的正则表达式模式。
newIsCapExceptions
类型:string[]
默认值:["Array", "Boolean", "Date", "Error", "Function", "Number", "Object", "RegExp", "String", "Symbol", "BigInt"]
忽略构造函数名称以大写字母开头的异常。
properties
类型:boolean
默认值:true
true 要求对象属性大写(例如,new obj.Method())。
如何使用
To enable this rule using the config file or in the CLI, you can use:
{
"rules": {
"new-cap": "error"
}
}import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"new-cap": "error",
},
});oxlint --deny new-capVersion
此规则是在 v0.15.5 中添加的。
