我有:
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/