修改函数以从类外部访问私有变量
modify function to access private variable from outside a class
我想修改getSecret函数,使私有变量"secret"能够从"bestfriends"类之外访问。
有什么想法吗?
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);
您忘记将new
关键字与bestfriends
一起使用。
应该像timon_pubmaa.getSecret()
一样在实例上调用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!
相关文章:
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- 查询后websql成功回调无法访问变量
- 无法访问变量
- 从ajax调用成功内部访问变量
- 从子弹出子窗口访问变量
- 下划线模板无法访问变量
- Meteor Iron路由器通过[data]vs[params]访问变量
- CanvasJS-访问变量-访问属性toString的权限被拒绝
- 如何从嵌套函数中访问变量
- 在<%%中定义的访问变量>从<脚本></脚本>
- 自提交表单访问变量javascript
- 如何访问变量
- 稍后在链中访问变量
- 在 Javascript 中访问变量
- 在方法调用对象之外访问变量而不使它们全局化(可能吗?
- 如何从函数/实例外部访问变量
- 从另一个脚本源访问变量
- Meteor:跨所有 Meteor.method的访问变量
- 每次加载页面时,火狐附加组件访问变量
- 在另一个函数中访问变量,返回未定义的 - JavaScript