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