这是什么javascript编码风格?
我正在维护一个ASP.NET MVC应用程序,该应用程序具有以下编码风格。该观点有:这是什么javascript编码风格?,javascript,Javascript,我正在维护一个ASP.NET MVC应用程序,该应用程序具有以下编码风格。该观点有: <script type="text/javascript"> $(document).ready(function() { SAVECUSTOMERS.init(); }); </script> 这是一种最佳实践JS编码风格吗?目的是让JS不引人注目吗 什么是客户?我知道在javascript中有不同的创建类的方法(根据本文),但这种风格不属于列出
<script type="text/javascript">
$(document).ready(function() {
SAVECUSTOMERS.init();
});
</script>
这在javascript中称为自调用函数。下面是我给大家的一篇文章。你可以在谷歌上获得更多信息
如果您指的是$编程,那么它与JQuery相关,其他答案也提供了链接。这种风格称为JQuery。。。你查过网站了吗,浏览一下…它正在使用 JQuery包含一个名为
$()
的函数,它允许您使用类似CSS的语法从DOM中选择元素
$(document).ready
位是一种标准的JQuery方法,用于确保只在页面加载完成后运行附带的代码。这是确保事件正确附加到相关DOM对象所必需的
将函数用作其他函数的参数的位称为“闭包”,这是编写Javascript的一种非常常见的方式,但特别是在使用JQuery时,JQuery可以使事情变得简单,并使用这种编码风格减少代码
请参阅本页:对于闭包如何在Javascript中工作以及如何编写闭包的初学者讨论(请注意,本页根本不看JQuery;闭包是JQuery大量使用的Javascript功能,但您不需要JQuery来编写闭包)这是使用JQuery处理事件的正常方式 最基本的情况是检查文档是否已加载
$(document).ready(function() {
SAVECUSTOMERS.init();
});
当您开始向按钮或任何可能的按钮添加绑定时。1)使用$(文档)。ready(或其他库中的类似函数)函数被认为是JavaScript的标准实践。首先,它确保JavaScript在完成DOM评估/构建的页面上执行。当确定DOM实际上何时准备就绪时,它还抽象掉了一些浏览器实现的不一致性。但我假设您主要指的是第二个代码块
您看到的是,SAVECUSTOMERS被分配了一个自动执行匿名函数的结果。这样做有几个原因,最常见的是能够控制匿名函数中函数和数据的作用域和“名称空间”。这是因为JavaScript具有词法作用域,而不是块级作用域
在JavaScript中使用这些自调用函数的做法非常普遍
然而,代码本身有几个问题。变量init、OnSave和OnCancel被声明为全局变量(因为省略了var关键字)。这在很大程度上违背了将它们包装到自调用函数中的目的。此外,该函数的内容混合使用对象分配语法和标准表达式语法,这将导致语法错误
此外,通过仅返回init函数,onSave和onCancel函数通过使用闭包被有效地“隐藏”或“私有”。这有助于保持名称空间的干净和封装
如果我在写这段代码(这里有一些个人的优点,有一些方法可以完成一些类似的事情),那么它会是这样的:
var SaveCustomers = (function($) {
var init = function () {
$("#saveCust").bind("click", onSave);
$("#cancel").bind("click", onCancel);
};
var onSave = function() {
//Save Logic;
};
var onCancel = function() {
//Cancel logic;
}
return { init: init };
})(jQuery);
关于上述内容的一些说明:
- 我使用var关键字声明变量。这使它们的作用域保持在该函数的本地(从技术上讲,您也可以使用命名函数声明)
- 我在自调用函数中将jQuery作为参数传递,并在函数调用中将其作为参数分配给$。这保护了函数中的$变量,这样我们就知道它引用了jQuery,并且没有被同样使用$的二级库占用
3) 不确定如何回答这个问题-了解JavaScript最佳实践的最佳方法是阅读已知质量良好的其他JavaScript代码,如jQuery源代码、原型或下划线等。SAVECUSOMTERS中的代码旨在模拟对象中的私有和公共属性。由于JS在默认情况下不支持这些属性,因此此自调用函数将执行并返回一定数量的属性。在本例中,它返回'init'方法。尽管您看到OnSave和OnClick,但您会发现根本无法访问它们。它们是“私有的”,仅在该功能内部使用
$()
函数是名为jQuery的javascript库的一部分,它是一个非常完善的库,主要用于DOM操作
$(document).ready()函数是jQuery持续轮询页面直到加载页面的一种方法。如果是,则执行其中的javascript
OnSave
和OnCancel
是私有函数,只能在自执行匿名(function(){…}())
的范围内访问,该函数返回一个对象,该对象允许公开访问init
函数SAVECUSTOMERS
成为上述函数返回的对象,即{init:init}
,一个具有一个方法init
的对象,可以访问该闭包中的函数var SaveCustomers = (function($) {
var init = function () {
$("#saveCust").bind("click", onSave);
$("#cancel").bind("click", onCancel);
};
var onSave = function() {
//Save Logic;
};
var onCancel = function() {
//Cancel logic;
}
return { init: init };
})(jQuery);