I am having problem identifying what and how is some property of "local" scope in JS. How is the property _secretNum "private" when it is clearly available outside the scope of the constructor as per below line.
document.write("Value of secretNum in secret: " + secret._secretNum
            + "<br/>");
The full code is as below,
<body>
<script type="text/javascript">
    function SecretCode() {
        var _secretNum = 78;
        this.guessNum = function(num) {
            if (num > _secretNum) {
                return "Lower";
            } else if (num < _secretNum) {
                return "Higher";
            } else {
                return "You guessed it";
            }
        }
        this.setNum = function(newNum) {
            this._secretNum = newNum;
        }
        this.getNum = function() {
            return this._secretNum;
        }
    }
    var secret = new SecretCode();
    for ( var prop in secret) {
        document.write(prop + " : " + secret[prop] + "<br/>");
    }
    document.write("Is 70 the number: " + secret.guessNum(70) + "<br/>");
    secret.setNum(9);
    document.write("Value of secretNum in secret: " + secret.getNum()
            + "<br/>");
    document.write("Value of secretNum in secret: " + secret._secretNum
            + "<br/>");
    var secretAliter = new SecretCode();
    secretAliter.setNum(17);
    document.write("Value of secretNum in secretAliter : "
            + secretAliter.getNum() + "<br/>");
    document.write("Value of secretNum in secretAliter : "
            + secretAliter._secretNum + "<br/>");
</script>
</body>
 
    