代码之家  ›  专栏  ›  技术社区  ›  LondonAppDev

为什么自定义传单控件添加为大写和小写?

  •  3
  • LondonAppDev  · 技术社区  · 8 年前

    我正在查看扩展传单文档以添加 custom controls .

    它包含此代码段,作为添加简单水印控件的示例:

    L.Control.Watermark = L.Control.extend({
        onAdd: function(map) {
            var img = L.DomUtil.create('img');
    
            img.src = '../../docs/images/logo.png';
            img.style.width = '200px';
    
            return img;
        },
    
        onRemove: function(map) {
            // Nothing to do here
        }
    });
    
    L.control.watermark = function(opts) {
        return new L.Control.Watermark(opts);
    }
    
    L.control.watermark({ position: 'bottomleft' }).addTo(map);
    

    为什么控件都是大写的( L.Control.Watermark )和小写字母 L.control.watermark 变量?在扩展JavaScript库时,这是一个常见的约定吗?

    2 回复  |  直到 8 年前
        1
  •  4
  •   nikoshr    8 年前

    如果你看名为 Extending Leaflet: Class Theory ,您将看到一个名为 Factories :

    大多数传单类都有相应的工厂函数。工厂函数与类同名,但在 低酶 而不是 大写字母 .

    基本上, 低酶 函数是实例化相应类的方便方法。你会找到很多关于为什么在构造函数上使用工厂函数的文章, this one 似乎比较全面

        2
  •  4
  •   ghybs    8 年前

    不幸的是,JavaScript中没有真正的约定。

    大多数OOP语言都有使用大写字母(pascalcase)的约定类。

    工厂模式主要避免使用 new 关键字。为了区分两者,在小叶中,前者使用帕斯卡酶,后者使用较低的骆驼壳。

    但是您会发现许多其他的JS库在它们的工厂中使用pascalcase(大多数时候它们在API中不提供等效的类)。

    欲了解更多关于传单所选惯例的信息,请看 Leaflet/Leaflet #1430 (这远不是一个明确的决定)。