javascript - 动态改变功能可以吗?

标签 javascript function dynamic

我有:

var diagram = {
  init: function(name) {
    this._name = name;
  },

  update: function(params) {
    var selector = 'diagram_name_' + this._name;

    this.update = function(params) {
      app.updateBlock(selector, params);
    };

    this.updateDiagram(params);
  };

diagram.update(); // caches `selector`
diagram.update(); // uses cached `selector`

diagram 对象具有方法update。此方法使用selector变量。第一次调用 update() 时,我缓存此变量并更改 update 方法,以便下次调用它时,此方法将使用缓存的 selector

我想知道这种方法在性能方面是否可行(以及是否完全可行)。有什么想法吗?

附注

我知道我可以创建私有(private)字段_selector并在init方法期间执行this._selector = 'diagram_name_' + name,但是这种方法创建仅由一种方法使用的私有(private)字段,感觉不对。

最佳答案

更好的方法可能是在对象上缓存选择器:

this._selector || (this._selector = "value");

这样,魔法就少了,您仍然可以访问所有旧数据,而不是使其消失。

您可能还想检查称为 memoization 的技术。 ,这个问题已经被解决了很多次(以避免自己动手)。

关于javascript - 动态改变功能可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29759554/

相关文章:

function - Lua - 找出调用函数

C - (C99),如何在不使用 stdlib.h(不使用 malloc)的情况下创建堆栈结构

javascript - 根据同一表行中输入框的最高值查找元素

javascript - 如何等待javascript函数响应?

javascript - 使用 angularjs 对特定两个字段进行 ng-repeat 搜索?

php - 将 mysql 更改为 mysqli 时出现 fatal error : Using $this when not in object context in,

dynamic - Selenium 获取动态 ID XPath

c - 如何设置动态内存和临时缓冲区?

javascript - 如何从javascript中的字符串中提取 float

javascript - jQuery 函数删除一行后刷新表