Пытается следовать примеру в «Javascript: The Good Parts», создавая закрытие, которое нужно скрыть. В случае простой «счет» объект, который имеет баланс, который не может быть изменен непосредственно:Закрытие Javascript возвращает NaN?
<head>
<script>
var myapp = {};
var account = function() {
var value = 0;
return {
"account_name": "",
deposit: function (amount) {
value = this.value + amount;
},
withdrawal: function (amount) {
value = this.value - amount;
},
balance: function() {
return value;
}
}
}();
myapp.account = account;
</script>
</head>
<body>
<script>
myapp.account.account_name = "Fred";
myapp.account.deposit(100);
myapp.account.withdrawal(25);
document.writeln("<p>Account name = " + myapp.account.account_name + "</p>");
document.writeln("<p>Balance = " + myapp.account.balance() + "</p>");
</script>
</body>
, который дает следующее:
имя учетной записи = Фред
Баланс = NaN
Wny NaN?
BTW, обычно записывать сразу вызываемые функциональные выражения (IIFE) с окружающими скобками, такими как 'var f = (function() {...}())', так что легче видеть, что они скорее являются IIFE чем выражение простой функции, прежде чем вы дойдете до конца блока и увидите '...}()'. Я думал, что Крокфорд написал их так же. – RobG
На самом деле нет, по крайней мере, в разделе о закрытии секции Крокфорда, о котором я говорил. Но, наверное, хорошая идея. – user1023110