问题中发布的代码无法生成该错误,因为Project
不是用户定义的函数/有效的构造函数。
function x(a,b,c){}
new x(1,2,3); // produces no errors
你可能做过这样的事情:
function Project(a,b,c) {}
Project = {}; // or possibly Project = new Project
new Project(1,2,3); // -> TypeError: Project is not a constructor
变量声明使用var
are hoisted因此总是在其余代码之前进行评估。因此,这也可能会导致问题:
function Project(){}
function localTest() {
new Project(1,2,3); // `Project` points to the local variable,
// not the global constructor!
//...some noise, causing you to forget that the `Project` constructor was used
var Project = 1; // Evaluated first
}