Javascript 未捕获范围错误:超过最大调用堆栈大小。。参数化构造函数

Javascript 未捕获范围错误:超过最大调用堆栈大小。。参数化构造函数,javascript,Javascript,当我点击managerOK按钮时,它在manager.call上给出了未捕获的范围错误 我尝试使用setTimeout,但由于我的构造函数已参数化,因此我无法在没有参数的情况下调用它。 请帮忙。我想我明白你的问题了。您正在其内部异步调用Manager构造函数,导致堆栈溢出: $(document).ready(function(){ function Employee(firstName) { this.firstName = firstName; } Employee.

当我点击managerOK按钮时,它在manager.call上给出了未捕获的范围错误 我尝试使用setTimeout,但由于我的构造函数已参数化,因此我无法在没有参数的情况下调用它。
请帮忙。

我想我明白你的问题了。您正在其内部异步调用Manager构造函数,导致堆栈溢出:

$(document).ready(function(){

  function Employee(firstName) {
    this.firstName = firstName;
  }

  Employee.prototype.goToWork = function(){
    console.log("I go to office daily!");
  };

  Employee.prototype.sayHello = function(){
    console.log("Hello, I'm " + this.firstName);
  };

  function Developer(firstName,project) {
    Employee.call(this, firstName);

    this.project = project;
  };

  Developer.prototype = Object.create(Employee.prototype);    
  Developer.prototype.constructor = Developer;                

  Developer.prototype.sayHello = function(){                  //overrides sayHello()
    console.log("Hello, I'm developer " + this.firstName + ". I'm in "
            + this.project + "project.");
  };

  Developer.prototype.developCode = function(){               
    console.log("I am developing code.");
  };

  $(".developerOK").click(function(){

    var name=$(".developerName").val();
    var project=$(".developerProject").val();
    var Developer1 = new Developer(name,project);
    Developer1.sayHello();
    Developer1.goToWork();
    Developer1.developCode();

  }); 

  function Manager(firstName,project) {
  setTimeout(Manager.call(this,firstName),5);

  this.project = project;
 };

 Manager.prototype = Object.create(Employee.prototype); 

 Manager.prototype.constructor = Manager;

 Manager.prototype.sayHello = function(){
   console.log("Hello, I'm manager " + this.firstName + ". I'm in "
            + this.project + "project.");
 };

 Manager.prototype.manageTeam = function(){
    console.log("I manage team.");
 };

 $(".managerOK").click(function(){

    var name=$(".managerName").val();
    var project=$(".managerProject").val();

    var Manager1 = new Manager(name,project);

    Manager1.sayHello();
    Manager1.goToWork();
    Manager1.manageTeam(); 

 });

});
这是一个常见的问题,我已经看到了它的几种变体。经理应该在5毫秒后被分配一些任务。它可能是您的其他类型之一-员工或开发人员


希望有帮助

函数ManagerfirstName,项目{setTimeoutManager.callthis,firstName,5;this.project=project;};这个构造函数显然调用了它自己,我得到了解决方案。不是Manager.call,而是Employee.call.:然后自己写一个答案并接受它。
function Manager(firstName,project) {
  setTimeout(Manager.call(this,firstName),5);

  this.project = project;
};