我不确定 ieAlert 类之外的 cookieExists 的定义。 变量 cookieExists 是否在类 ieAlert 之外可以吗? 还是应该将其定义为类定义中的属性?
var cookieExists = document.cookie.indexOf('ie11_cookie') >= 0;
class ieAlert {
// Method for checking if IE11
static isIE() {
return window.navigator.userAgent.match(/(MSIE|Trident)/);
}
// Method for setting a cookie
static createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
}
if (!ieAlert.isIE() && !cookieExists) {
window.alert("Your browser is outdated!");
ieAlert.createCookie('myCookie', 'ie11_cookie', 1);
}
module.exports = ieAlert;
答案 0 :(得分:2)
在the advice I already gave之后,您可以简单地将exports.increment = function () {
return {
type: "INC"
}
}
定义为With CreateObject("Scriptlet.TypeLib")
'' For Del This = {}
WSH.Echo mid(.Guid ,2, 36)
WSH.Echo (.Guid)
End With
的属性。如果您希望属性访问权限每次都重新评估条件,则将其定义为getter property:
cookieExists
答案 1 :(得分:0)
我认为,这可能需要更多有关您要完成的目标的解释。自行运行,此代码将在没有cookieExists
作为类属性的情况下执行。
但是,由于您要导出该类,因此我认为问题在于它如何作为模块运行。
当需要此模块并加载和评估其代码时,它将评估并执行条件表达式。但是,由于唯一的导出是class ieAlert
,并且条件表达式的评估根本不是该类的一部分,因此评估附加表达式的结果就是所谓的副作用。模块的“ strong>”。有关更多说明,请参见this stackoverflow question。
除了定义类ieAlert
之外,此模块还可能影响范围。通常,不建议这样做。
也许您可以像这样定义class ieAlert
的方法:
static findCookie() {
return document.cookie.indexOf('ie11_cookie') >= 0;
}
这样,您可以更好地控制何时进行评估。