gpt4 book ai didi

javascript - 在 Javascript 构造函数中调用方法并访问其变量

转载 作者:行者123 更新时间:2023-12-03 00:26:04 27 4
gpt4 key购买 nike

我正在尝试从我的 javascript 构造函数的构造函数中调用一个方法,这可能吗?如果可以,我似乎无法让它工作,任何见解都会很棒!谢谢!

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");
}

我让它可以与上面的内容一起使用,但我似乎无法访问 CreateErrorList 函数中的“errArray”变量。

最佳答案

是的,有可能,当您的构造函数执行时,this 值已经具有指向 ValidateFields 的 [[Prototype]] 内部属性。原型(prototype)对象。

现在,通过查看您的编辑,errArray 变量在 CreateErrorList 方法的范围内不可用,因为它仅绑定(bind)到构造函数本身。

如果您需要保持此变量私有(private)并且只允许CreateErrorList方法访问它,您可以将其定义为特权方法 ,在构造函数中:

function ValidateFields(pFormID){
var aForm = document.getElementById(pFormID);
var errArray = [];

this.CreateErrorList = function (formstatid){
// errArray is available here
};
//...
this.CreateErrorList();
}

请注意,该方法由于绑定(bind)到 this,因此不会共享,并且它将物理存在于 ValidateFields 的所有对象实例上.

另一种选择,如果您不介意将 errArray 变量作为对象实例的 public 属性,则只需将其分配给 对象:

//..
this.errArray = [];
//..

更多信息:

关于javascript - 在 Javascript 构造函数中调用方法并访问其变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com