Javascript 如何将对象用作函数和对象?

Javascript 如何将对象用作函数和对象?,javascript,closures,Javascript,Closures,尝试在JavaScript中创建一个“类”,该类既可以在类的根上有一个函数,也可以在其他子函数上有一个函数: Validate(word)-如果单词经过验证,则返回true或false Validate.getRule()-返回用于验证单词的规则 下面是示例代码: var Validate = function (word) { this.rule = /^[a-m]$/; if (word) { return this.rule.test(word); } el

尝试在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

您有范围问题

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

}();

您有范围问题

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

}();

直接调用函数时,
word
参数始终未定义,
是全局范围(
窗口
),因此代码的作用与:

var rule = /^[a-m]$/;
var Validate = {
  getRule: function() { return this.rule; }
};
如果希望某个对象同时作为函数和对象工作,请声明该函数,然后向其添加属性(因为函数实际上是对象):


直接调用函数时,
word
参数始终未定义,
是全局范围(
窗口
),因此代码的作用与:

var rule = /^[a-m]$/;
var Validate = {
  getRule: function() { return this.rule; }
};
如果希望某个对象同时作为函数和对象工作,请声明该函数,然后向其添加属性(因为函数实际上是对象):


你想如何在语法上使用它?你想如何在语法上使用它?请告诉我:)我想补充一点,就可伸缩性和可维护性而言,这并不是构造代码的好方法-但这可能不是一个问题(我知道这不是问题的一部分)<代码>验证(“asfd”)给出
TypeError:Validate不是一个函数
击败我:)我想补充一点,就可伸缩性和可维护性而言,这并不是构建代码的好方法-但这可能不是一个问题(我知道这不是问题的一部分)<代码>验证(“asfd”)给出
类型错误:验证不是一个函数