在Javascript构造函数中调用方法并访问其变量
我试图从我的javascript构造函数的构造函数中调用一个方法,这可能吗?如果可能的话,我似乎无法让它工作,任何洞察都会很棒!谢谢在Javascript构造函数中调用方法并访问其变量,javascript,prototype,constructor,methods,Javascript,Prototype,Constructor,Methods,我试图从我的javascript构造函数的构造函数中调用一个方法,这可能吗?如果可能的话,我似乎无法让它工作,任何洞察都会很棒!谢谢 function ValidateFields(pFormID){ var aForm = document.getElementById(pFormID); this.errArray = new Array();//error tracker this.CreateErrorList(); } /* * CreateErrorList
function ValidateFields(pFormID){
var aForm = document.getElementById(pFormID);
this.errArray = new Array();//error tracker
this.CreateErrorList();
}
/*
* CreateErrorList()
* Creates a list of errors:
* <ul id="form-errors">
* <li>
* You must provide an email.
* </li>
* </ul>
* returns nothing
*/
ValidateFields.prototype.CreateErrorList = function(formstatid){
console.log("Create Error List");
}
函数验证字段(pFormID){
var aForm=document.getElementById(pFormID);
this.errArray=new Array();//错误跟踪器
这个.CreateErrorList();
}
/*
*CreateErrorList()
*创建错误列表:
*
*-
*你必须提供一封电子邮件。
*
*
*一无所获
*/
ValidateFields.prototype.CreateErrorList=函数(formstatid){
log(“创建错误列表”);
}
我让它可以处理上面的内容,但我似乎无法访问CreateErrorList函数中的“errArray”变量。您是否在某处创建了
验证字段的对象
编辑:每当引用函数的公共属性时,都需要在前面加上该
在此更新代码:
是的,当您的构造函数执行时,此
值可能已经具有指向ValidateFields.Prototype
对象的[[Prototype]]
内部属性
现在,通过查看您的编辑,errArray
变量在CreateErrorList
方法的范围内不可用,因为它仅绑定到构造函数本身的范围
如果需要将此变量保持私有,并且只允许CreateErrorList
方法访问它,则可以在构造函数中将其定义为特权方法:
function ValidateFields(pFormID){
var aForm = document.getElementById(pFormID);
var errArray = [];
this.CreateErrorList = function (formstatid){
// errArray is available here
};
//...
this.CreateErrorList();
}
请注意,由于该方法绑定到此
,因此不会被共享,并且它将实际存在于验证字段
的所有对象实例上
另一个选项是,如果您不介意将errArray
变量作为对象实例的公共属性,则只需将其分配给此
对象:
//..
this.errArray = [];
//..
更多信息:
解决方案:
function ValidateFields(pFormID){
console.log("ValidateFields Instantiated");
var aForm = document.getElementById(pFormID);
this.errArray = new Array();//error tracker
this.CreateErrorList(); //calling a constructors method
}
ValidateFields.prototype.CreateErrorList = function(){
console.log("Create Error List");
console.log(this.errArray); //this is how to access the constructors variable
}
希望这能帮助将来有类似问题的人。是的……我是,但我应该重新表述我的问题,我最终让它按照上面的方式工作,但由于某些原因,我无法访问CreateErrorList中的“errArray”变量。经过进一步研究,我发现“errArray”前面必须有这个键,以便其他方法可以使用它。感谢您的帮助。来到这里的pythonists:在javascript中初始化对象必须使用new
关键字。