Javascript 闭包错误

标签 javascript closures javascript-objects

几天前我被 Javascript 的闭包错误严重困扰,但太忙了,没时间问。我正在使用 jQuery 模板引擎尝试类似以下内容。

<ul id="container"></ul>
<script type="text/jq-tmpl" id="myTmpl">
  <li>
    <span style="background:#fafafa">X:${X}</span>
    <span style="background:#ababab">Y:${Inner.Y}</span>
    <span style="background:#9a9a9a">Z:${Inner.Z}</span>
  </li>
</script>

function OuterObject(x,y,z){
  this.X = x;
  this.Inner = InnerObject(y,z);
}

function InnerObject(y,z){
  this.Y=y;
  this.Z=z;
}

$(function(){
  var l=[];
  l.push(OuterObject(1,"One","inner-1"));
  l.push(OuterObject(2,"Two","inner-2"));
  $("#myTmpl").tmpl(l).appendTo("#container");
});

问题是它显示了渲染的两个项目的 inner-2Two 。我也尝试过这样的:

var a=OuterObject(1,"One","inner-1");
l.push(a);
var b=OuterObject(2,"Two","inner-2");
l.push(b);

但是都是一样的。

最佳答案

看起来您在调用构造函数时需要使用“new”。

例如new Outerobject(...)new InnerObject(...)

否则,this 对象将不会被返回。

关于Javascript 闭包错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11554146/

相关文章:

ios - 使用完成处理程序(闭​​包)语法从 objective-c 文件调用 swift 文件中的函数

javascript - 检查变量是否设置在全局范围内?

javascript - 如何使用 javascript/angularjs 比较两个对象数组?

javascript - 如何枚举私有(private) JavaScript 类字段

javascript - 循环遍历对象数组并返回某些值的总和

javascript - 我正在努力展平一个对象中的两个数组

javascript - 如何设置数组中推送对象的属性?

javascript - 使用 Javascript 更改背景渐变颜色

javascript - JS : Data being altered through exposed method?

javascript - 如何在 ExtJs4 中动态设置网格 CheckBox 选择模型?