如何使本地可变的全局JavaScript



>我有这样的类:https://jsfiddle.net/0sh7fLtp/

当我创建此类的新对象时,即使我在类中分配给 window,也看不到我的局部变量:

function Hilitor() {
    var excat;
    this.setMatchType = function(type) {
        if (type == "exact"){ 
            window.excat = true;
        } 
    };
    this.setRegex = function(input) {
        alert(excat);
    };
    this.apply = function(input) {
        this.setRegex();
    };
}

这就是我所说的:

var myHilitor = new Hilitor();
myHilitor.apply();
myHilitor.setMatchType("exact");

不确定我是否完全理解您的问题,但您正在尝试将变量"excat"与字符串"excat"进行比较......请参阅此小提琴,了解如何使 var 成为字符串,然后获得所需的输出。

https://jsfiddle.net/shemdani/0sh7fLtp/5/

var myHilitor = new Hilitor();
myHilitor.setMatchType("excat");
myHilitor.apply();

function Hilitor()
{
  var excat;
  this.setMatchType = function(type)
  {
     if(type == "excat"){window.excat = true;} 
  };
  this.setRegex = function(input)
  {
   alert(window.excat);
  };
  this.apply = function(input)
  {
      this.setRegex();
  };
}

两个主要问题

1) 函数中的var exact不是全局变量,因此无法在window对象上访问。(但这是一件好事)。

如果您仅删除window.exact,您的代码将起作用exact

this.setMatchType = function(type)
  {
     if(type == "exact"){excat = true;} 
  };

2)在打电话之前,您也在打电话给apply setMatchType。像这样切换它们的工作原理:

var myHilitor = new Hilitor();
myHilitor.setMatchType("excat");
myHilitor.apply();

工作示例

最新更新