JS -工厂模式覆盖私有变量存储在内存中
JS - factory pattern overwrites private vars when stored in memory
所以我对js还是很陌生,我想进入更高级的东西,但我有这个问题与工厂模式,这是基本的代码:
(function () {
var objs = [];
function createObj(name) {
var thename = name;
return {
publicsaythename : function () {
console.log(thename);
}
}
}
for(var i = 0; i < 5; i++) {
var theObj = createObj("thename" + i);
theObj.publicsaythename();
objs.push(theObj);
}
for(var i = 0; i < objs.length; i++) {
theObj.publicsaythename();
}
})();
console.log调用的第一组输出是我所期望的:
thename0
thename1
thename2
thename3
thename4
第二系列控制台。log输出我创建的最后一个对象5次。
5 x thename4
我做错了什么吗?或者这是意料之中的?
也可以,如果需要的话。如何解决能够存储您创建的对象以供以后使用的问题?
您只在theObj
变量中存储一个对象引用,因此输出如预期的那样。
我认为这是你打算在第二个循环中做的:
for(var i = 0; i < objs.length; i++) {
objs[i].publicsaythename();
}
所以存储对象的方式没有问题。我猜你只是用错了。: -)
相关文章:
- 使用javascript存储变量的最安全方式
- 如何在Javascript中为不同的页面访问存储变量
- Javascript 会话存储变量未正确保存
- 服务中的角度存储变量
- 在文本字段中显示保存的本地存储变量 - javascript
- 带有本地存储变量的 jQuery 循环不起作用
- 单击“在时间存储变量”按钮,以便在触发 ajaxComplete 事件时使用
- 页面刷新后的 Javascript 存储变量
- 如何存储变量中单击的子项
- 如何获取不同选项卡的实例,以便我可以存储变量/执行特定于各个选项卡的操作
- 如何使用 jquery 使用本地存储变量设置输入字段
- 无法检索本地存储变量
- 显示本地存储变量
- HTML5会话存储:变量未存储在<李>onclick属性
- 在HTML或Javascript中,如何为每个人存储变量
- SeleniumIDE替换存储变量中的字符串
- JQuery设置本地存储变量
- 在服务AngularJS中存储变量
- 如何使用存储变量和随机数与硒ide
- 计算器Javascript/Jquery存储变量