Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery $。扩展函数构造函数的副本属性_Jquery_Underscore.js_Lodash - Fatal编程技术网

Jquery $。扩展函数构造函数的副本属性

Jquery $。扩展函数构造函数的副本属性,jquery,underscore.js,lodash,Jquery,Underscore.js,Lodash,我们使用函数构造函数(Douglas Crockford的函数继承模式),只复制属性来验证它们。代码是这样的 var test= function(TestSpec){ var thattest = {}; thattest.begindate = TestSpec.begindate; thattest.getBegindate = function(){ return thattest.begindate;

我们使用函数构造函数(Douglas Crockford的函数继承模式),只复制属性来验证它们。代码是这样的

    var test= function(TestSpec){
        var thattest = {};

        thattest.begindate = TestSpec.begindate;
        thattest.getBegindate = function(){
            return thattest.begindate;
        };

        return  thattest;
    }
//这就是我最初试图复制属性的内容

        var copy = $.extend(true, {}, test )
        console.log(copy);
        _.each(copy, function(c) {
            console.log('[' + c + ']');
        });
如何仅复制属性?我正在寻找一种使用函数样式将属性复制到另一个对象的方法。
如果需要,我们可以使用下划线.js或lodash。

如果您的目标是只复制不引用函数的属性,那么使用自己的递归函数就相当简单:

function copyAttributes(src) {
    var dest = {};
    Object.keys(src).forEach(function(key) {
        var value = src[key];
        switch (typeof value) {
            case "function":
                break;
            case "object":
                dest[key] = copyAttributes(value);
                break;
            default:
                dest[key] = value;
                break;
        }
    });
    return dest;
}
用法:

var copy = copyAttributes(test);

您可能希望在上面的
“object”
案例中做一些更智能的事情来克隆内置类型(数组、
Date
RegExp
等)。您可以
打开
,这会为您提供更多信息。

定义“属性”。您是指不引用函数的属性吗?不清楚您想要实现什么。特别是,
$.extend(true,{},test)
看起来没有什么特别的意义。我几分钟前问过它:-)我们只复制属性,不复制函数。代码到处重复,我们有很多函数构造函数。@Roamer我试图使用JQuery,因为我在寻找一种简洁的方法。我还想尝试使用下划线或lodash的功能性样式。仍然不清楚。你所说的“函数构造函数”是什么意思?你想对它们做什么?强大的underline.js或lodash呢?@MohanRadhakrishnan:好吧,你在API文档中看到了做这件事的东西吗?console.log(u.functions(object));我想我可以用这个排除函数。但是console.log(u.functions(test));不起作用。