javascript - 编码方式: storing methods as object properties

标签 javascript json tiles

阅读时Hashrocket's blog在tilemapping上,我了解了一种组织代码的新方法。

我习惯的方式是:

(function start () {
   scene();
})();

function scene() {
   renderLayer();
}

function renderLayer() {
   var x
   var y
}

等等...

Hashrocket 在函数包装器中创建一个对象,并将函数和变量作为属性添加到该对象:

$(function() {
    var scene = {
      layers: [],
      renderLayer: function(layer) { },
      renderLayers: function(layers) { },
      loadTileset: function(json) { },
      load: function(name) { }
    }

scene.load(something);

});

这种编码风格的名称是什么?有什么区别/优点?它看起来像 OOP,因为 scene = { 是类,它的属性是类中的方法/属性。

谢谢!

最佳答案

将函数存储在对象中的主要优点是减少名称冲突的可能性。您的第一个示例使用 scene()renderLayer() 污染了全局命名空间,如果您有包含其他包和模块的中等代码库,这可能会带来危险。

在第二个片段中,scene 在匿名函数内定义。这有两个好处:

  • 它使得函数外部的代码无法访问scene对象。 Information hiding已强制执行。
  • 声明的评估会延迟到页面完全加载所有内容(包括图像、脚本文件、CSS 文件等)。这保证了所有资源都可用。

关于javascript - 编码方式: storing methods as object properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21918268/

相关文章:

javascript - 如何更新特定输入字段的值而不是 td 第一个子字段的值?

javascript - 使用 Vue.js 2 中的总线模式更改一个组件的状态

struts2 - 启用 Tiles devMode(如 Struts 的 devMode)以在每次请求时重新加载tiles.xml

javascript - BackboneJS,保存模型时遇到成功和错误问题

javascript - 如何从 "Promise"对象获取值

javascript - 使用 Node 中嵌套对象的字符串文字进行 JSON 解析

java - 渲染多层图 block

java.lang.IllegalArgumentException : Cannot find a factory to create the request context

jquery - 使用 jQuery 循环遍历 JSON 结果

java - 无法将 json 字符串解析为通用 java 对象