JavaScript
程序员小豪
阿里云专家博主,全栈工程师,曾于蔚来、腾讯实习,现任职于某大厂,技术栈:Vue,React,Python,Java
展开
-
手写call-apply-bind以及了解柯里化
柯里化 function curry() { let allArgs = [...arguments] // 返回一个新函数 function curried() { allArgs.push(...arguments) return curried } // 重写toString cur原创 2021-10-23 19:42:49 · 213 阅读 · 0 评论 -
JS arguments对象
众所周知,js是一门相当灵活的语言。当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的东西里面 function showargs() { console.log(arguments); } showargs(1, 2, 3, 4, 5);我们可以看到arguments对象的__ proto __是指向object的,这也说明了他是个类数组对象,而不..原创 2021-10-22 13:25:59 · 195 阅读 · 0 评论 -
手写instanceof
function myInstanceof(x, fn) { if (typeof x !== 'object') return false let p = x.__proto__ if (p === null) return false if (p !== fn.prototype) { return myInstanceof(p, fn) } els..原创 2021-10-21 22:51:31 · 175 阅读 · 0 评论 -
手写typeof
function myTypeof(x) { let a = Object.prototype.toString.call(x).slice(8, -1).toLowerCase() let t = [ 'number', 'bigint', 'string', 'symbol', 'functio..原创 2021-10-21 22:26:21 · 254 阅读 · 0 评论 -
JS数组遍历方法
map.有返回值,将每一次遍历的返回值组成最终的数组 arr = [1, 12, 35, 13, 5, 98, 100, 8] let res = arr.map(x => { return x * 10 }) console.log(res);forEach没有返回值,输出返回值只会是undefined,只会遍历每一项every和someevery要每一项返回true才会返回true,some只..原创 2021-10-21 00:38:51 · 200 阅读 · 0 评论 -
数组扁平化
没有指定层数的数组扁平化 let arr = [1, [2, [1, 2, 3, [4, 5, 6]]], 18, [25, 12, [13, 14, 27]]] function flatten(arr) { let res = [] for (let i = 0; i < arr.length; i++) { if (Array.isArray(arr[i])) {原创 2021-10-18 21:24:35 · 166 阅读 · 0 评论 -
js手写new操作符
每天一道手写题手写new核心代码 function myNew(fn, ...arg) { let obj1 = {} if (fn.prototype) obj1.__proto__ = fn.prototype let res = fn.apply(obj1, arg) if (res && (typeof res == 'function' ||原创 2021-10-17 22:38:45 · 192 阅读 · 2 评论