function Validator(formIsValid) {
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 val = new Validator();
以上是我的Val.js.这就是我在otherFile.js中使用的方式
AddPatient.Firstname = FirstNameValue || Validator.enforceLabelHasText(FirstName);
我收到错误cannot find function enforceLabelHasText in Object function Validator(formIsValid)
答案 0 :(得分:5)
这是无效的语法。
您已在对象定义中转储if/else
条件,如下所示:
var myObj = { a, b, c, d,
if (true) {
alert('WTF!');
}
};
这样的程序代码必须在函数内部。
答案 1 :(得分:5)
您不能将表达式放在对象定义中。如果希望在创建对象实例后执行代码,则应使用:
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();
这是一个虚拟解决方案;您需要向Validator()
函数添加参数,以初始化formIsValid
和其他值。我建议你阅读the MDC's description on prototypes。
编辑:如果您使用原型解决方案,则需要在val.enforceLabelHasText(FirstName)
成为全局变量之后调用val
(通过省略var
或者使用var window.val = new Validator()
)。
答案 2 :(得分:2)
Validator
是一个对象文字,你只能在那里分配属性,而不是任意代码。
您可以将包含代码的功能分配给属性。
答案 3 :(得分:1)
将其绑定到开头的变量中。
var that = this;
这可以保持这种变化并指向别的东西。 并使用萤火虫!
答案 4 :(得分:1)
您可以使用iife将逻辑插入对象文字。像这样;
const testable = 1
const obj = {
a: 'value1',
b: (() => {
if (testable === 1) {
return 'testable was 1'
} else {
return 'testable was not 1'
}
})()
}
console.log(obj)