这种使用angular.extend是否有任何目的



我继承了一个代码库,其中包含以下代码片段(从其源代码简化以减少参数数量并匿名代码,同时保持一般行为(:

/**
 * @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.extendObject.assignlet clone = {...original}以避免我们稍后将在渲染中使用的对象发生变化。

现在,在大多数情况下,如果您

正在更改/更改其属性,angular 不会检测到其范围内对象的变化。但是,如果使用克隆完全重写该对象,然后更改属性,则将触发渲染。

但是在你的情况下,没有必要做任何这样的事情,你的函数实际上是在每次调用它时创建一个新对象,所以你可以安全地删除angular.extend。

相关内容

最新更新