修改函数以从类外部访问私有变量

时间:2015-02-17 20:25:05

标签: javascript

我想修改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);

1 个答案:

答案 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!