我想修改getSecret函数以启用私有变量' secret'从外面访问“好朋友”'类。
有什么想法吗?
function bestfriends(name1, name2) {
this.friend1 = name1;
this.friend2 = name2;
var secret = "Hakuna Matata!";
console.log (this.friend1 + ' and ' + this.friend2 + ' are the best of friends! ');
}
bestfriends.prototype.getSecret = function() {
return secret
}
var timon_pubmaa = bestfriends('timon', 'pumbaa');
var timon_pumbaa_secret = getSecret();
console.log(timon_pumbaa_secret);
答案 0 :(得分:0)
您忘记将new
关键字与bestfriends
一起使用。
getSecret
等实例上调用 timon_pubmaa.getSecret()
。
您的secret
变量是构造函数的本地变量,无法从该方法访问它。为了实现这一点,你可以创建一个闭包并返回你的consturctor,在闭包中你可以创建私有的变量。
var bestfriends = (function () {
var secret; // private variable
function bestfriends(name1, name2) {
this.friend1 = name1;
this.friend2 = name2;
secret = "Hakuna Matata!";
console.log(this.friend1 + ' and ' + this.friend2 + ' are the best of friends! ');
}
bestfriends.prototype.getSecret = function () {
return secret
}
return bestfriends;
})();
var timon_pubmaa = new bestfriends('timon', 'pumbaa');
var timon_pumbaa_secret = timon_pubmaa.getSecret();
console.log(timon_pumbaa_secret); // Hakuna Matata!