eslint/new-cap Style
What it does
This rule requires constructor names to begin with a capital letter.
Why is this bad?
The new operator in JavaScript creates a new instance of a particular type of object. That type of object is represented by a constructor function. Since constructor functions are just regular functions, the only defining characteristic is that new is being used as part of the call. Native JavaScript functions begin with an uppercase letter to distinguish those functions that are to be used as constructors from functions that are not. Many style guides recommend following this pattern to more easily determine which functions are to be used as constructors.
Warning: The option newIsCapExceptionPattern
and capIsNewExceptionPattern
are implemented with the rust regex syntax. Many JavaScript features are not supported (Lookahead, Lookbehinds, ...).
Examples
Examples of incorrect code for this rule:
function foo(arg) {
return Boolean(arg);
}
Examples of incorrect code for this rule with the default { "newIsCap": true }
option:
/*eslint new-cap: ["error", { "newIsCap": true }]*/
var friend = new person();
Examples of correct code for this rule with the default { "newIsCap": true }
option:
/*eslint new-cap: ["error", { "newIsCap": true }]*/
var friend = new Person();
Examples of correct code for this rule with the { "newIsCap": false }
option:
/*eslint new-cap: ["error", { "newIsCap": false }]*/
var friend = new person();
Examples of incorrect code for this rule with the default { "capIsNew": true }
option:
/*eslint new-cap: ["error", { "capIsNew": true }]*/
var colleague = Person();
Examples of correct code for this rule with the default { "capIsNew": true }
option:
/*eslint new-cap: ["error", { "capIsNew": true }]*/
var colleague = new Person();
Examples of correct code for this rule with the { "capIsNew": false }
option:
/*eslint new-cap: ["error", { "capIsNew": false }]*/
var colleague = Person();
Examples of additional correct code for this rule with the { "newIsCapExceptions": ["events"] }
option:
/*eslint new-cap: ["error", { "newIsCapExceptions": ["events"] }]*/
var events = require("events");
var emitter = new events();
Examples of additional correct code for this rule with the { "newIsCapExceptionPattern": "^person\\.." }
option:
/*eslint new-cap: ["error", { "newIsCapExceptionPattern": "^person\\.." }]*/
var friend = new person.acquaintance();
var bestFriend = new person.friend();
Examples of additional correct code for this rule with the { "newIsCapExceptionPattern": "\\.bar$" }
option:
/*eslint new-cap: ["error", { "newIsCapExceptionPattern": "\\.bar$" }]*/
var friend = new person.bar();
Examples of additional correct code for this rule with the { "capIsNewExceptions": ["Person"] }
option:
/*eslint new-cap: ["error", { "capIsNewExceptions": ["Person"] }]*/
function foo(arg) {
return Person(arg);
}
Examples of additional correct code for this rule with the { "capIsNewExceptionPattern": "^person\\.." }
option:
/*eslint new-cap: ["error", { "capIsNewExceptionPattern": "^person\\.." }]*/
var friend = person.Acquaintance();
var bestFriend = person.Friend();
Examples of additional correct code for this rule with the { "capIsNewExceptionPattern": "\\.Bar$" }
option:
/*eslint new-cap: ["error", { "capIsNewExceptionPattern": "\\.Bar$" }]*/
foo.Bar();
Examples of additional correct code for this rule with the { "capIsNewExceptionPattern": "^Foo" }
option:
/*eslint new-cap: ["error", { "capIsNewExceptionPattern": "^Foo" }]*/
var x = Foo(42);
var y = Foobar(42);
var z = Foo.Bar(42);
properties
Examples of incorrect code for this rule with the default { "properties": true }
option:
/*eslint new-cap: ["error", { "properties": true }]*/
var friend = new person.acquaintance();
Examples of correct code for this rule with the default { "properties": true }
option:
/*eslint new-cap: ["error", { "properties": true }]*/
var friend = new person.Acquaintance();
Examples of correct code for this rule with the { "properties": false }
option:
/*eslint new-cap: ["error", { "properties": false }]*/
var friend = new person.acquaintance();
Examples of incorrect code for this rule with the default { "newIsCap": true }
option:
/*eslint new-cap: ["error", { "newIsCap": true }]*/
var friend = new person();
Examples of correct code for this rule with the default { "newIsCap": true }
option:
/*eslint new-cap: ["error", { "newIsCap": true }]*/
var friend = new Person();
Examples of correct code for this rule with the { "newIsCap": false }
option:
/*eslint new-cap: ["error", { "newIsCap": false }]*/
var friend = new person();
Examples of incorrect code for this rule with the default { "capIsNew": true }
option:
/*eslint new-cap: ["error", { "capIsNew": true }]*/
var colleague = Person();
Examples of correct code for this rule with the default { "capIsNew": true }
option:
/*eslint new-cap: ["error", { "capIsNew": true }]*/
var colleague = new Person();
Examples of correct code for this rule with the { "capIsNew": false }
option:
/*eslint new-cap: ["error", { "capIsNew": false }]*/
var colleague = Person();
Examples of additional correct code for this rule with the { "newIsCapExceptions": ["events"] }
option:
/*eslint new-cap: ["error", { "newIsCapExceptions": ["events"] }]*/
var events = require("events");
var emitter = new events();
Examples of additional correct code for this rule with the { "newIsCapExceptionPattern": "^person\\.." }
option:
/*eslint new-cap: ["error", { "newIsCapExceptionPattern": "^person\\.." }]*/
var friend = new person.acquaintance();
var bestFriend = new person.friend();
Examples of additional correct code for this rule with the { "newIsCapExceptionPattern": "\\.bar$" }
option:
/*eslint new-cap: ["error", { "newIsCapExceptionPattern": "\\.bar$" }]*/
var friend = new person.bar();
Examples of additional correct code for this rule with the { "capIsNewExceptions": ["Person"] }
option:
::: correct
/*eslint new-cap: ["error", { "capIsNewExceptions": ["Person"] }]*/
function foo(arg) {
return Person(arg);
}
Examples of additional correct code for this rule with the { "capIsNewExceptionPattern": "^person\\.." }
option:
/*eslint new-cap: ["error", { "capIsNewExceptionPattern": "^person\\.." }]*/
var friend = person.Acquaintance();
var bestFriend = person.Friend();
Examples of additional correct code for this rule with the { "capIsNewExceptionPattern": "\\.Bar$" }
option:
/*eslint new-cap: ["error", { "capIsNewExceptionPattern": "\\.Bar$" }]*/
foo.Bar();
Examples of additional correct code for this rule with the { "capIsNewExceptionPattern": "^Foo" }
option:
/*eslint new-cap: ["error", { "capIsNewExceptionPattern": "^Foo" }]*/
var x = Foo(42);
var y = Foobar(42);
var z = Foo.Bar(42);
Examples of incorrect code for this rule with the default { "properties": true }
option:
/*eslint new-cap: ["error", { "properties": true }]*/
var friend = new person.acquaintance();
Examples of correct code for this rule with the default { "properties": true }
option:
/*eslint new-cap: ["error", { "properties": true }]*/
var friend = new person.Acquaintance();
Examples of correct code for this rule with the { "properties": false }
option:
/*eslint new-cap: ["error", { "properties": false }]*/
var friend = new person.acquaintance();