我继承了一个代码库,其中包含以下代码片段(从其源代码简化以减少参数数量并匿名代码,同时保持一般行为(:
/**
* @param {float} a
* @param {string} b
* @param {string} c
* @param {boolean} d
& @return (object)
*/
srv.pack = function(a , b , c , d)
{
return angular.extend({} , {
a: a ,
e: d ? b : c ,
f: d ? c : b
});
};
根据我对angular.extend
文档的阅读,似乎这种angular.extend
的使用没有任何用处,可以通过删除它来简化代码。是这样吗,还是由于我对 AngularJS 缺乏经验而我不知道这里的细微差别?
由于您正在创建要复制的对象,因此在复制之前,您可以直接返回该对象。
我们通常使用 angular.extend
,Object.assign
或let clone = {...original}
以避免我们稍后将在渲染中使用的对象发生变化。
正在更改/更改其属性,angular 不会检测到其范围内对象的变化。但是,如果使用克隆完全重写该对象,然后更改属性,则将触发渲染。
但是在你的情况下,没有必要做任何这样的事情,你的函数实际上是在每次调用它时创建一个新对象,所以你可以安全地删除angular.extend。