我有这样的课: 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");
答案 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)
var exact
不是全局变量,因此无法在window
对象上访问。 (但这是一件好事)。如果仅删除window.exact
exact
,您的代码就会生效
this.setMatchType = function(type)
{
if(type == "exact"){excat = true;}
};
apply
之前,您也在致电setMatchType
。像这样切换它们有效:var myHilitor = new Hilitor();
myHilitor.setMatchType("excat");
myHilitor.apply();