javascript - 在javascript中控制相关对象的正确方法是什么?

标签 javascript oop

我是面向对象编程的新手,正在慢慢学习如何将其应用于 javascript。所以请多多包涵。 :)

我有两个基本对象:

  1. “record”,其中包含用于编辑记录集中单个记录的方法。 (创建、保存、加载等)

  2. “recordList”,其中包含用于输出记录标题分页列表的方法。

我希望这些对象能够协同工作。例如,如果 record.save() 被调用,recordList.refresh() 也会被调用,因此分页列表反射(reflect)更新的数据。

为此,我创建了第三个对象“control”,它包含“record”和“recordList”的实例。我以下列方式使用“控制”:

control = {}

    control.record = object.create("record");
    control.recordList = object.create("recordList");

    control.save = function() {

        this.record.save();
        this.recordList.refresh();

    };

这行得通。但我想知道,这样做合适吗? (我想确保这样做没有违反 OO 设计的任何规则。)有没有更好的方法?

预先感谢您的帮助。

最佳答案

从 OOP 的 Angular 来说,我不认为记录会自救。数据库中的记录只是数据,而数据库本身就是对数据进行处理,无论是保存还是加载等等。话虽这么说,我会让记录只是一个保存数据的对象,并会创建一个记录集对象用于与数据交互。在该记录集对象中,您可以放置​​您的 recordList 并相应地更新它。像这样的东西:

var recordset = function() {
    var me = this;
    var currentRecord = object.create("record");
    var recordList = object.create("recordList");
    me.save = function() {
            //Insert record.save code here
            recordList.refresh();
    };
};

关于该代码的一些注意事项。在该设置中,无法从函数外部访问 currentRecord 和 recordList,因此您进行了封装,这是 OOP 的标志之一。这是因为记录集函数是一个“关闭”其中所有变量的闭包,这意味着其中的每个函数都可以访问记录集范围内的变量。

您可以让外界通过 get 或 set 函数访问:

    me.getRecordList = function() {
        return recordList.getArray(); //Not generally a good idea to simply return your internal object
    };

关于javascript - 在javascript中控制相关对象的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2280912/

相关文章:

c++ - 类设计建议 : extending a class and code reuse

language-agnostic - 什么时候返回 this-reference 有意义?

c++ - 面向对象编程 c++ dll Code::Blocks

python - 在循环中创建类实例并更新它

android - Activity 与 Fragment 交互

javascript - 如何使用 vanilla JS 为 wordpress 主题中的每篇文章增加动画延迟

Javascript定时器切换功能

javascript - 我如何将 csrf_token 包含到 dropzone Post 请求(Django)

javascript - 函数 getById Raphael js

javascript - PhantomJS分析mp3文件的FFT数据并保存