有没有办法禁止在浏览器控制台中使用某些方法?假设我希望浏览器能够使用这些功能,而不是用户。
我正在尝试做一个(钱)柜台。这是我的代码:
// Counter declaration
var myCnt;
// Counter constructor
function Counter(initVal) {
// Private variables
var cnt = initVal;
var that = this;
// Privileged functions
this.add = function (val) {
switch (val) {
case 1:
case 2:
case 5: cnt += val; break;
default: alert("Wrong value!"); return;
}
return cnt;
}
this.show = function () { // Updates the value
document.getElementById("cnt").innerHTML = cnt;
return;
}
}
/* // This self-invoking function gets the initial (last) value of the counter from an xml file.
(function loadLast() {
var xml = new XMLHttpRequest(), container = document.getElementById("cnt");
var theVal = 0;
xml.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
theVal = parseInt(xml.responseXML.getElementsByTagName("Value")[0].firstChild.nodeValue);
myCnt = new Counter(theVal);
myCnt.show();
}
}
xml.open("GET", "lastval.xml", true);
xml.send();
})(); */
myCnt = new Counter(0); // Normally, this object is instantiated in the self-invoking function above
myCnt.show();
div#cnt {
width: 100px;
height: 100px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: navy;
color: white;
}
div#btn-container {
width: 100px;
height: 100px;
position: relative;
}
<!DOCTYPE html>
<html>
<head>
<title>Money Box Counter</title>
</head>
<body>
<div id="cnt"></div>
<div id="btn-container">
<button type="button" onclick="myCnt.add(1); myCnt.show();">+1</button>
<br>
<button type="button" onclick="myCnt.add(2); myCnt.show();">+2</button>
<br>
<button type="button" onclick="myCnt.add(5); myCnt.show();">+5</button>
</div>
</body>
</html>
那么,例如,有没有办法拒绝用户访问Counter.add
方法而不将其设为私有?因此,只有客户或用户,但只能通过按钮,才能修改计数器。
我想过在arguments.callee.caller
方法中使用Counter.add
属性,但我读过这个不应该用作ES5。
另一个问题是,如果这是一个好习惯吗?我的意思是,我要做的是隐藏一些不应被用户自己使用的功能......
谢谢!并且有一个好的!