本文主要编写JS方法的更适用,耐用和常见的处理。同时,它将用于一些构建的JS方法。一方面,它旨在掌握这些JS方法以提高效率,而另一方面,另一方面是Handeveryone的封装逻辑。
本文是一篇长期帖子,将在发布前提下不时更新。为了避免混淆,文章的目录结构将根据更新点进行分配。我将在实际开发中尽可能地学习并掌握新的知识点,并不断改善文章的内容。
如果读者发现在写作过程中有不正确和不适当的地方,我希望在不感谢的情况下及时通知他们!
1.实现阵列和对象的范围。我们经常用于开发。因此,您是否考虑过如何实现内部实现?现在我们需要分析内部的逻辑。
注意:
//包装判断是阵列funch(value){return_tostring.call(value)===“ [对象数组]”;}的方法
//当将for foreach函数封装为foreach(val,fn){//(1)null and Undefined时,直接返回,而无需处理,如果(值=== null ||值=== undefined);返回;} //(2)如果它不是对象,请转换为阵列类型,如果(typeof value!==“对象”){value = [value];} //(3)处理数组的情况if(isarray(val)){for(让i = 0,j = value; i < j; i++) { //回调函数内this指向改为null fn.call(null, val[i], i, val); } } else { for (const k in val) { // for in 遍历对象是包括了原型链上的可枚举属性,使用hasOwnProperty只选择实例对象上的可枚举属性 if (val.hasOwnProperty(k)) { //回调函数内this指向改为null fn.call(null, val[k], k, val); } } } }
// 例子: const arr1 = [1, 2, 3, 4, 5]; const arr2 = { id: 1, name: "阿离", age: 18 };
forEach(arr1, (item, index, arr) => {console.log(item,index,arr);});// 1 0 [1,2,3,4,5] // 2 1 [1,2,4,5] // 3 2 [1,2,3,4,5] // 4 3 [1,2、3、4、5] // 5 4 [1、2、3、4、5]
foreach(arr2,(item,index,arr)=> {console.log(item,index,arr);});// 1 ID {ID:1,名称:年龄:18} // alie name {id:1,name:'a li',年龄:18} // 18岁{id:1,name:'a a li',年龄:18}
3.可以在该方法上提到手写应用方法()方法,并可以更改函数的功能,并说明了两者之间的差异,这将在此处不重复。方法可以检查到MDN。
4.手写bind()方法还可以更改函数的方向,但不会直接执行函数。方法可以创建一个新函数。被调用时,指定了此新功能的第一个参数,其余参数将用作呼叫时使用的新功能的参数。可以将详细信息检查到MDN。
原始:https://juejin.cn/post/709853069122289701