首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角1.3.x的`.merge()`的Backport

角1.3.x的`.merge()`的Backport
EN

Stack Overflow用户
提问于 2015-05-26 11:13:47
回答 1查看 163关注 0票数 1

角1.4 (还不稳定)有一个我感兴趣的函数:.merge()

因为我不想使用不稳定的库,所以我正在寻找一个替代角1.3.x的方法。我的项目中有什么"backports“库可以模仿.merge()吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-26 11:23:03

只要看一下实际的代码,它已经有了很好的文档,您应该能够自己模仿它,https://code.angularjs.org/1.4.0-rc.2/angular.js

第459项

合并功能:

代码语言:javascript
复制
function merge(dst) {
    return baseExtend(dst, slice.call(arguments, 1), true);
}

它使用baseExtend函数

代码语言:javascript
复制
function baseExtend(dst, objs, deep) {
    var h = dst.$$hashKey;

    for (var i = 0, ii = objs.length; i < ii; ++i) {
        var obj = objs[i];
        if (!isObject(obj) && !isFunction(obj)) continue;
        var keys = Object.keys(obj);
        for (var j = 0, jj = keys.length; j < jj; j++) {
            var key = keys[j];
            var src = obj[key];

            if (deep && isObject(src)) {
                if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};
                baseExtend(dst[key], [src], true);
            } else {
                dst[key] = src;
            }
        }
    }

    setHashKey(dst, h);
    return dst;
}

它用

代码语言:javascript
复制
function setHashKey(obj, h) {
    if (h) {
        obj.$$hashKey = h;
    } else {
        delete obj.$$hashKey;
    }
}

用角型替换baseExtend中缺少的函数(即angular.isObject用于isObject等)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30456947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档