当ejs文件编译时,它将成为javascript函数。例如,此ejs文件
<h3> Users Index</h3>
<ul>
<% users.each(function (user) { %>
<li><%= user.get("name") %></li>
<% })%>
</ul>
编译为此JavaScript函数:
(function() { this.JST || (this.JST = {}); this.JST["users/index"] = function(obj){var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('<h3> Users Index</h3>\n\n<ul>\n '); users.each(function (user) { ; __p.push('\n <li>', user.get("name") ,'</li>\n '); }); __p.push('\n</ul>\n\n');}return __p.join('');};
}).call(this);
在上述javascript函数中,
this
指的是什么? (即骨干视图等) 最佳答案
如果运行这样的自执行函数构造
(function() { console.log(this) }).call(this);
您会注意到它会输出(Chrome控制台输出)
Window {external: Object, chrome: Object, document: document, i: undefined, StackExchange: Object…}
因此,所有这些操作只是将变量
JST
添加到全局(window
)命名空间中,以便在以下每个脚本中均可访问它。this.JST || (this.JST = {});
行将确保是否存在window.JST
(如我们所见,window
= this
),如果不存在,则会创建该行,并且其值将是一个空对象(this.JST = {}
)。关于javascript - 编译后的jst模板中的“this”是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34407494/