Discover Functional JavaScript was named one of the best new Functional Programming books by BookAuthority!

“发现功能JavaScript”BookAuthority评为最佳新功能编程书籍之一

I suggest to take into consideration these ideas for building reliable objects in JavaScript:

我建议考虑以下想法以在JavaScript中构建可靠的对象:

  • Split objects in two: data objects and behavior objects将对象一分为二:数据对象和行为对象
  • Make the data objects immutable使数据对象不可变
  • Expose behavior and hide data in behavior objects公开行为并隐藏行为对象中的数据
  • Build testable behavior objects建立可测试的行为对象

数据与行为对象 (Data vs Behavior Objects)

Essentially there are two kinds of objects in an application:

本质上,应用程序中有两种对象:

  • Data Objects — expose data

    数据对象-公开数据

  • Behavior Objects — expose behavior and hide data

    行为对象-公开行为并隐藏数据

数据对象 (Data Objects)

Data objects expose data. They are used to structure and transfer data inside the application.

数据对象公开数据。 它们用于在应用程序内部构造和传输数据。

Let’s take the case of a to-do list application.

让我们以待办事项清单应用程序为例。

This is how the to-do data object, gotten from the server, may look:

这是从服务器获得的待办事项数据对象的外观:

{ id: 1, title: "This is a title", userId: 10, completed: false }

And this is how a data object used to display information in the view may look:

这是用来在视图中显示信息的数据对象的外观:

{ id: 1, title: "This is a title", userName: "Cristi", completed: false };

As you can see, both objects contain only data. There is a small difference between them: the data object for the view has userName instead of the userId.

如您所见,两个对象仅包含数据。 它们之间的差别很小:视图的数据对象具有userName而不是userId

Data objects are plain objects, usually built with object literals.

数据对象是普通对象,通常使用对象文字构建。

行为对象 (Behavior Objects)

Behavior objects expose methods and hide data.

行为对象公开方法并隐藏数据。

Behavior objects act on data objects. They may take data objects as inputs or return data objects.

行为对象作用于数据对象。 它们可以将数据对象作为输入或返回数据对象。

I’ll take the case of the TodoStore object. The responsibility of the object is to store and manage the list of to-dos. It makes the synchronization with the server using the dataService object.

我将以TodoStore对象TodoStore 。 对象的职责是存储和管理待办事项清单。 它使用dataService对象与服务器进行同步。

Read Functional Architecture with React and Redux and learn how to build apps in function style.

阅读具有React和Redux的功能架构,并学习如何以函数样式构建应用程序。

Discover Functional JavaScript was named one of the best new Functional Programming books by BookAuthority!

发现功能JavaScript被称为 BookAuthority最好的新功能编程书籍

For more on applying functional programming techniques in React take a look at Functional React.

有关在React中应用函数式编程技术的更多信息,请查看 Functional React

You can find me on Medium and Twitter.

您可以在Medium和Twitter上找到我。

翻译自: https://www.freecodecamp.org/news/how-to-build-reliable-objects-with-factory-functions-in-javascript-9ec1c089ea6f/

如何使用JavaScript中的工厂函数构建可靠的对象相关推荐

  1. JavaScript中的工厂函数vs构造函数vs class

    原文链接:JavaScript Factory Functions vs Constructor Functions vs Classes 作者:Eric Elliott 译者:sunny 转载需提前 ...

  2. 在javascript中使用纯函数处理副作用

    在javascript中使用纯函数处理副作用 今天给大家带来一片译文, 详情请点击这里.可能在墙内哦 开始了, 如果你点开这篇文章, 就证明你已经开始涉及函数式编程了, 这距离你知道纯函数的概念不会很 ...

  3. 工厂好的html页面,jquery中被誉为工厂函数的是什么?

    jquery中被誉为工厂函数的是"$()".在jQuery中,无论我们使用哪种类型的选择符都需要从一个"$"符号和一对"()"开始.下面本篇 ...

  4. R语言使用party包中的ctree函数构建条件推理决策树的流程和步骤、条件推理决策树是传统决策树的一个重要变体、条件推理树的分裂是基于显著性测试而不是熵/纯度/同质性度量来选择分裂

    R语言使用party包中的ctree函数构建条件推理决策树的流程和步骤(Conditional inference trees).条件推理决策树是传统决策树的一个重要变体.条件推理树的分裂是基于显著性 ...

  5. R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型、分类预测器(分类变量)被自动替换为一组虚拟编码变量、summary函数查看检查模型、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型(Logistic regression).分类预测器(分类变量)被自动替换为一组虚拟编码变量.summary函数查看检查模型.使用t ...

  6. R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表

    R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees).使用plot函数可视化训练好的条件推理决策树.条件推理决策树的叶子节点的阴影区域表 ...

  7. 理解javascript中的回调函数(callback)【转】

    在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...

  8. 关于javascript中的回调函数

    关于javascript中的回调函数 原文地址:http://blog.csdn.net/sicluoyi/article/details/1737969 考虑一个这样的例子: 假如某个项目的底层和高 ...

  9. 深入认识javascript中的eval函数

    来源:http://wanyij.blog.51cto.com/46570/43794 发现为本文起一个合适的标题还不是那么容易,呵呵,所以在此先说明下本文的两个目的: (1)介绍javascript ...

最新文章

  1. python同步赋值原理,Python直接赋值及深浅拷贝原理详解
  2. hbase设计方案1
  3. ActionScript3.0自定义Flex组件问题 重写组件的使用
  4. python subplot_气象编程 | 一个简单的风数据处理和分析案例(Python版)
  5. 【UI/UX】深度解析模态窗口
  6. springboot之rabbitmq
  7. starccm中文用户指南_【干货】Salesforce系统管理员认证考试指南
  8. 算法导论-15.5-4
  9. Linux网络编程——原始套接字编程
  10. 微信ipad协议源码
  11. 大三计算机专业下在哪投实习简历,大三实习生简历通用模板
  12. 实现xml和json接口(第一篇)
  13. EPIC的服务器稳定吗,epic国内有服务器吗(epic服务器在哪)
  14. solr和elasticsearch
  15. 解决URP资源的材质成洋红色问题
  16. C++ iterator(迭代器)用法
  17. 关于快速学习一项新技术或新领域的一些个人思维习惯与思想总结
  18. 基于JavaEE的游泳馆管理系统_JSP网站设计_SQLServer数据库设计
  19. Java 老矣,尚能饭否?
  20. 杭电ACM2085--核反应堆

热门文章

  1. 【金三银四】微软java后端社招
  2. 安卓开发基础面试题,Android面试必备的集合源码详解,附小技巧
  3. Debian 安装 yum
  4. CF 526F Max Mex(倍增求LCA+线段树路径合并)
  5. Python os 属性(便于跨平台开发)
  6. 恶意软件伪装“正规军”,撕开Booster Cleaner“画皮”下的真相
  7. 通过NSNotification来监听键盘弹出和弹回
  8. 脚本语言+文档对象模型基于浏览器客户端的编程
  9. 安装容器编排工具 Docker Compose
  10. copy 扩展名 包含子文件夹 文件 到某个 文件夹