Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是什么javascript编码风格?_Javascript - Fatal编程技术网

这是什么javascript编码风格?

这是什么javascript编码风格?,javascript,Javascript,我正在维护一个ASP.NET MVC应用程序,该应用程序具有以下编码风格。该观点有: <script type="text/javascript"> $(document).ready(function() { SAVECUSTOMERS.init(); }); </script> 这是一种最佳实践JS编码风格吗?目的是让JS不引人注目吗 什么是客户?我知道在javascript中有不同的创建类的方法(根据本文),但这种风格不属于列出

我正在维护一个ASP.NET MVC应用程序,该应用程序具有以下编码风格。该观点有:

<script type="text/javascript">

    $(document).ready(function() {

        SAVECUSTOMERS.init();
    });
</script>
  • 这是一种最佳实践JS编码风格吗?目的是让JS不引人注目吗
  • 什么是客户?我知道在javascript中有不同的创建类的方法(根据本文),但这种风格不属于列出的任何类别
  • 在哪里可以找到关于这种JS编码风格的更多信息

  • 这在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,并且没有被同样使用$的二级库占用

    2) SAVECUSTOMERS是一个基本的JavaScript对象,它拥有一个名为“init”的属性,其值是一个函数,由执行中的init声明定义


    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);