尝试在JavaScript中创建一个“类”,它可以在类的根和其他子函数中都有一个函数:
Validate(word)
- 如果单词已经过验证,则返回true或false
Validate.getRule()
- 返回用于验证单词的规则。
以下是示例代码:
var Validate = function (word)
{
this.rule = /^[a-m]$/;
if (word)
{
return this.rule.test(word);
}
else
{
return {
getRule : function()
{ return this.rule;}
};
}
}();
如果你在没有参数的情况下调用它,这是第一次工作,但是第二次出现以下错误:
TypeError: object is not a function
答案 0 :(得分:2)
您有范围问题。
var Validate = function (word)
{
var that = this;
this.rule = /^[a-m]$/;
if (word)
{
return this.rule.test(word);
}
else
{
return {
getRule : function()
{ return that.rule;}
};
}
}();
答案 1 :(得分:1)
当您直接调用该函数时,word
参数始终未定义,this
是全局范围(window
),因此代码与:
var rule = /^[a-m]$/;
var Validate = {
getRule: function() { return this.rule; }
};
如果你想要一些东西作为一个函数和一个对象工作,声明该函数,然后向它添加属性(作为一个函数实际上是一个对象):
var Validate = (function(){
var rule = /^[a-m]$/;
function validate(word) {
return rule.test(word);
}
validate.getRule = function() { return rule; };
return validate;
})();