Sys*_*emR 6 jquery design-patterns
基本上我想做这样的事情:
$(document).ready(function() {
if ($(body).attr("class") === "HomePage") {
HomePage.init(); //bind events for home page (Crockford's module pattern)
} else if ($(body).attr("class") === "AboutPage") {
AboutPage.init(); //bind events for about page
}
});
Run Code Online (Sandbox Code Playgroud)
原因是我可以将所有内容缩小为一个js文件,从而减少了http请求的数量.这个解决方案绝对不优雅,因为每当我添加新页面时我都需要添加另一个'else if'语句.我可以用:
$(document).ready(function() {
eval($(body).attr("class") + ".init();");
});
Run Code Online (Sandbox Code Playgroud)
但eval是邪恶的,我不知道使用这种方法的性能影响.
为什么不使用eval
其他方式来调用 javascript 对象而不是使用[]
?
假设所有对象的范围都是全局的,为什么不尝试:
$(document).ready(function() {
window[$(body).attr("class")].init();
});
Run Code Online (Sandbox Code Playgroud)