如何制作本地变量全局javascript

时间:2017-01-26 20:22:11

标签: javascript global local

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

当我创建这个类的新对象时,即使我在类中指定了窗口,也无法看到我的局部变量:

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");

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的问题,但您正在尝试比较变量" excat" to string" 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 :(得分:0)

两个主要问题

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();

Working example