从封装对象访问对象中的变量
Access a variable in an object from an encapsulate one
标题有点模棱两可,但代码解释得很清楚:
function Game() {
this.secret = '';
this.Playground = {
this.someTreat: function() {
console.log('how to access secret from here ?');
}
};
}
var Test = new Game();
Test.Playground.someTreat();
我提供了一个具有相同代码的JSFiddle
在您的代码中,您需要对如何访问变量secret
进行一些更改-您可以将this
关键字复制到that
变量中,如Peter的答案。
另一种方式是:
function Game() {
var secret = 'secret information';
this.Playground = {
this.someTreat = function() {
console.log(secret);
};
};
}
由于Game
函数外壳,秘密变量对该作用域是私有的。只要你在这个框内定义你的函数,这些函数就可以访问秘密的"private"变量。
您必须在Game
函数中创建this
的副本。规范的做法是创建一个名为that
的变量。
function Game() {
this.secret = 'secret information';
var that = this;
this.Playground = {
someTreat: function() {
console.log(that.secret);
}
};
}
var test = new Game();
test.Playground.someTreat();
您可以在jsFiddle上看到这个操作
(我修复了您在Playground和someTreat定义中的错误)
在'this'上使用闭包:
function Game() {
var self = this;
this.secret = 'xyz';
this.Playground = {
someTreat: function() {
console.log('how to access secret from here ?');
console.log('response: use self');
console.log('self.secret: ' + self.secret);
}
};
}
相关文章:
- 如何在HTML中显示服务器对象变量
- 在Javascript中重新分配对象变量时,原始对象会发生什么
- Javascript 方法看不到对象变量
- JavaScript对象范围-在对象方法中使用对象变量
- 将对象(变量)传递给angularjs指令
- 对象变量在 JavaScript 中是不可访问的
- 无法访问公共JavaScript对象变量
- 可以't获取具有“t”的对象变量;这个“;由setTimeout()函数调用的对象函数中的属性
- Javascript:如何在回调中设置父对象变量
- 从方法内部设置对象变量
- 访问对象中的对象变量
- JavaScript 中的对象变量
- 从 json 代码中删除 javascript 对象变量名称文本
- 将变量传递到对象变量中
- JavaScript 如何重新识别事件对象变量
- 从对象变量中获取子节点
- 使对象变量在所有“更深”的范围内都是可访问的
- 从方法 JavaScript 访问对象变量
- 如何在 javascript 中保存对象变量的状态
- 无法访问IE和Mozilla中javascript的类对象变量