我的理解,最简单的理解方式就是 _.iteratee 会返回一个函数,根据你传参的不同,_.iteratee返回的函数的作用不同
以下是官网说明
创建一个函数,通过创建函数的参数调用 func
函数。 如果 func
是一个属性名,传入包含这个属性名的对象,回调返回对应属性名的值。 如果 func
是一个对象,传入的元素有相同的对象属性,回调返回 true
。 其他情况返回 false
。
这是我的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js"></script>
<script>
let result2 = _.iteratee("aaa") // 传入字符串
console.log(result2,"result2"); // 此时的 result2 是一个函数,而这个函数的作用就是,当你传入一个对象,他会寻找这个对象有没有一个属性名叫 aaa的,如果有,就输出这个属性值,没有就输出undefined
let obj={
aaa:456456
}
let result3 = result2(obj)
console.log(result3,"result3"); // obj里面有一个属性名叫aaa的,属性值是456456,所以输出是 456456 'result3'
let obj1 = {
bbb:789
}
let result4 = _.iteratee(obj1) // 传入对象
console.log(result4,"result4"); // 此时的 result4 也是一个函数,这个函数的作用是,当你传入另外一个对象,如果那个对象有一个属性的 bbb:789,那么返回 true,否则返回 false,要属性名和属性值都一样
let obj2 = {
bbb:789,
ccc:111
}
let result5 = result4(obj2)
console.log(result5,"result5"); // 因为 obj2 里面有一个属性值是 bbb:789,,所以这里输出是 true 'result5'
</script>
</body>
</html>