几天前我被 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-2
和 Two
。我也尝试过这样的:
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/