Javascript 对象内部的If/else条件
我得到一个错误,说在对象函数验证器(formIsValid)中找不到函数enforceLabelHasText在开始时将其绑定到一个变量Javascript 对象内部的If/else条件,javascript,Javascript,我得到一个错误,说在对象函数验证器(formIsValid)中找不到函数enforceLabelHasText在开始时将其绑定到一个变量 AddPatient.Firstname = FirstNameValue || Validator.enforceLabelHasText(FirstName); 这会保持这种变化,并指向其他方面。 使用萤火虫 这是无效的语法 您在对象定义中转储了if/else条件,如下所示: var that = this; 像这样的过程代码必须在函数中。不能将
AddPatient.Firstname = FirstNameValue || Validator.enforceLabelHasText(FirstName);
这会保持这种变化,并指向其他方面。
使用萤火虫 这是无效的语法 您在对象定义中转储了
if/else
条件,如下所示:
var that = this;
像这样的过程代码必须在函数中。不能将表达式放入对象定义中。如果希望在创建对象实例后执行代码,应使用:
var myObj = { a, b, c, d,
if (true) {
alert('WTF!');
}
};
函数验证器(){
如果(此。formIsValid){
警报('表单有效!');
}
否则{
警报('表单无效…');
}
}
Validator.prototype={//注意这里的.prototype,这很重要!
福米斯瓦利德:是的,
enforceTextFieldMinLength:函数(字段,minLength){
如果(!field.value | | field.value.length
这是一个虚拟的解决方案;您需要将参数添加到Validator()
函数中,以初始化formIsValid
和其他值。我建议你读一读
编辑:如果使用原型解决方案,则在将
val
设置为全局变量后(通过省略var
或使用var window.val=new Validator()
),需要调用val.enforceLabelHasText(FirstName)
).验证程序是一个对象文本,您只能在其中分配属性,不能分配任意代码
您可以将包含代码的函数分配给属性。您可以使用。像这样,
const testable=1
常量对象={
a:‘值1’,
b:(()=>{
如果(可测试===1){
返回“可测试为1”
}否则{
返回“可测试不是1”
}
})()
}
log(obj)
这不是空指针问题;这只是一个语法错误。@Gabi Purcaru:当我将所有这些内容都包含到一个文件中时,Valdiator是一个未定义的错误。@John Cooper,这是一个拼写错误;我拼写的是Valdiator
,而不是Validator
。现在应该可以了。@Gabi这是使用代码创建对象的唯一方法,该代码以对象文本的构造函数形式运行吗?您可以在对象定义之后编写代码,如下所示:var Validator={…};如果(Validator.formIsValid){…}
@Gabi Purcaru:我如何从我的其他JS代码调用强制函数。。。注意:所有这些Valdiator代码都在Val.jsconst obj={a:'value1',b:checkTestable()}
中,在没有生命的情况下可以完成同样的事情,但我不认为这是OP真正想要的(我不认为他真的仔细考虑了他试图做的事情。)谢谢。我把这个换成了开关。效果很好。
var myObj = { a, b, c, d,
if (true) {
alert('WTF!');
}
};
function Validator() {
if(this.formIsValid) {
alert('Form is valid!');
}
else {
alert('Form is invalid...');
}
}
Validator.prototype = { // Notice the .prototype here, it's important!
formIsValid: true,
enforceTextFieldMinLength: function(field, minLength) {
if (!field.value || field.value.length < minLength) {
this.formIsValid = false;
}
},
enforceLabelHasText: function(label) {
if (!label.text) {
this.formIsValid = false;
}
}
}
var a = new Validator();