来自Ruby背景,我习惯用类和方法等编写所有代码。我非常了解javascript,但我是jQuery及其最佳实践的新手。
显然,有一百万种方法可以在javascript中模拟类。但是,真实世界中真正使用的jQuery社区是什么?
具体的例子是理想的。或链接到真实的生产代码。链接到虚构的理想代码也会有所帮助。
谢谢!
答案 0 :(得分:3)
这不适用于jQuery,但我喜欢在我自己的代码中模拟类的对象文字语法。
http://ajaxian.com/archives/show-love-to-the-object-literal
我倾向于经常使用类似这样的(简化)框架:
var Widget = {
sound:'bleep',
load:function(){
// do stuff here that doesn't need to wait until the DOM is ready.
// Inside an anonymous function (such as the 'click' handler below),
// 'this' loses its scope and no longer refers to the widget object.
// To retain a reference to the widget object, assign 'this' to a
// variable. I use an underscore... some people like 'self':
var _ = this;
// when the DOM is ready, run the init "method":
$(document).ready(function(){
_.init(); // the underscore now refers to the widget object
});
},
init:function(){
var _ = this;
// whenever a <p class="noisy"> element is clicked, call makeNoise()
$("p.noisy").click(function(){
_.makeNoise();
});
},
makeNoise:function(){
alert(this.sound); // alert 'bleep'
}
};
Widget.load();
修改:有关使用'this'关键字的更多信息,如上所述:
http://groups.google.com/group/jquery-en/browse_thread/thread/328d07f90467cccc?pli=1
答案 1 :(得分:2)
答案 2 :(得分:0)
我在当前项目中使用jQuery遇到了同样的问题,我对jQuery也有同感。这就像是大隐秘的方法链。当它变得越来越大时,需要更多时间来理解我之前写的内容。
我发现制作更易维护的jQuery代码的唯一方法是Module Pattern。也许它很有用。你也可以查看有关同一问题的Ajaxian jQuery vs. Prototype: OO JavaScript with or without training wheels文章。