1) 函数中的
2)在打电话之前,您也在打电话给
>我有这样的类: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();