Home

function: cloneWith


cloneWith(value: *, customizer: function): *

This method is like `clone` except that it accepts `customizer` which is invoked to produce the cloned value. If `customizer` returns `undefined`, cloning is handled by the method instead. The `customizer` is invoked with up to four arguments (value [, index|key, object, stack]).

Example(s):

function customizer(value) {
  if (isElement(value)) {
    return value.cloneNode(false)
  }
}

const el = cloneWith(document.body, customizer)

console.log(el === document.body)
// => false
console.log(el.nodeName)
// => 'BODY'
console.log(el.childNodes.length)
// => 0

Params:

Name Type Attribute Description
value The value to clone.
customizer The function to customize cloning.

Returns:

*

  {
    "comment": "/**\r\n * This method is like `clone` except that it accepts `customizer` which\r\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\r\n * cloning is handled by the method instead. The `customizer` is invoked with\r\n * up to four arguments (value [, index|key, object, stack]).\r\n *\r\n * @since 4.0.0\r\n * @category Lang\r\n * @param {*} value The value to clone.\r\n * @param {Function} [customizer] The function to customize cloning.\r\n * @returns {*} Returns the cloned value.\r\n * @see cloneDeepWith\r\n * @example\r\n *\r\n * function customizer(value) {\r\n *   if (isElement(value)) {\r\n *     return value.cloneNode(false)\r\n *   }\r\n * }\r\n *\r\n * const el = cloneWith(document.body, customizer)\r\n *\r\n * console.log(el === document.body)\r\n * // => false\r\n * console.log(el.nodeName)\r\n * // => 'BODY'\r\n * console.log(el.childNodes.length)\r\n * // => 0\r\n */",
    "meta": {
        "range": [
            996,
            1170
        ],
        "filename": "cloneWith.js",
        "lineno": 35,
        "path": "C:\\Users\\beaujeup\\projects\\jsdoc-template\\examples\\lodash\\lodash-repo",
        "code": {
            "id": "astnode100000661",
            "name": "cloneWith",
            "type": "FunctionDeclaration",
            "paramnames": [
                "value",
                "customizer"
            ]
        },
        "vars": {
            "customizer": "cloneWith~customizer"
        }
    },
    "description": "This method is like `clone` except that it accepts `customizer` which\ris invoked to produce the cloned value. If `customizer` returns `undefined`,\rcloning is handled by the method instead. The `customizer` is invoked with\rup to four arguments (value [, index|key, object, stack]).",
    "since": "4.0.0",
    "tags": [
        {
            "originalTitle": "category",
            "title": "category",
            "text": "Lang",
            "value": "Lang"
        }
    ],
    "params": [
        {
            "type": {
                "names": [
                    "*"
                ]
            },
            "description": "The value to clone.",
            "name": "value"
        },
        {
            "type": {
                "names": [
                    "function"
                ]
            },
            "optional": true,
            "description": "The function to customize cloning.",
            "name": "customizer"
        }
    ],
    "returns": [
        {
            "type": {
                "names": [
                    "*"
                ]
            },
            "description": "Returns the cloned value."
        }
    ],
    "see": [
        "cloneDeepWith"
    ],
    "examples": [
        "function customizer(value) {\r  if (isElement(value)) {\r    return value.cloneNode(false)\r  }\r}\r\rconst el = cloneWith(document.body, customizer)\r\rconsole.log(el === document.body)\r// => false\rconsole.log(el.nodeName)\r// => 'BODY'\rconsole.log(el.childNodes.length)\r// => 0"
    ],
    "name": "cloneWith",
    "longname": "cloneWith",
    "kind": "function",
    "scope": "global",
    "___id": "T000002R000072",
    "___s": true,
    "filepath": "cloneWith.js"
}