首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏杨龙飞前端

    underscore.js,js工具

    _indexBy() 返回一个key-value形式的js对象可用于添加商品业务逻辑的实现; _.map(productsData,function(product){ var objNegative= /jquery.js"></script> <script src=". /underscore-min.<em>js</em>"></script> <style type="text/css"> *{padding: 0;margin:0;} table{border-collapse

    39K50发布于 2018-05-15
  • 来自专栏Cellinlab's Blog

    JS 手写: instanceof

    instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

    67130编辑于 2023-05-17
  • 来自专栏Cellinlab's Blog

    JS 手写: Ajax

    # 思路 创建 XMLHttpRequest 实例 发出 HTTP 请求 服务器返回 XML 格式的字符串 JS 解析 XML 字符串 随着历史推进,XML 已经被淘汰,取而代之的是 JSON # 版本

    4.3K10编辑于 2023-05-17
  • 来自专栏Cellinlab's Blog

    JS 手写: Promise

    一个 Promise 对象代表一个在这个 promise 被创建出来时不一定已知的值。它让您能够把异步操作最终的成功返回值或者失败原因和相应的处理程序关联起来。 这样使得异步方法可以像同步方法那样返回值:异步方法并不会立即返回最终的值,而是会返回一个 promise,以便在未来某个时候把值交给使用者。

    2.1K40编辑于 2023-05-17
  • 来自专栏Cellinlab's Blog

    JS 手写: new

    创建一个对象类型,需要创建一个指定其名称和属性的函数;对象的属性可以指向其他对象,看下面的例子: 当代码 new Foo(...) 执行时,会发生以下事情:

    2.4K10编辑于 2023-05-17
  • 来自专栏Cellinlab's Blog

    JS 手写: 节流 (throttle)

    # 思路 节流函数原理:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效 # 场景 拖拽 固定时间内只执行一次,防止超高频次触发位置变动 缩放 监控浏览器 resize 动画 避免短时间内多次触发动画引起性能问题 # 实现 /** * @param {Function} fn * @param {Number} delay */ function throttle (fn, delay = 50) { let lastTime = 0; return

    71020编辑于 2023-05-17
  • 来自专栏前端小叙

    手写 js数组reduce

    MDN 文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

    93120编辑于 2022-08-18
  • 来自专栏前端小叙

    手写js 数组打平

    console.log("array flat"); // 1. 因为只有数组才有 concat 方法,所以这里必须写入初始值 空数组 只能打平一层 // const flat = (list) => list.reduce((a, b) => a.concat(b), []); // 2. 直接用 concat 和扩展运算符,只能打平一层 // const flat = (list) => [].concat(...list); // 3. 加一个递归,可以打平深层数组 // const flat =

    75440编辑于 2022-08-19
  • 来自专栏腾讯IVWEB团队的专栏

    手写 js 沙箱

    只是有点复杂先用with,在用Proxy with with这个特性,也算是一个比较鸡肋的,他和eval并列为js两大SB特性. 不说无用, bug还多,安全性就没谁了... ></iframe> 这样,就可以保证js脚本的执行,但是禁止iframe里的javascript执行top.location = self.location。 设置基本的安全特性 <iframe sandbox='allow-scripts' id='sandboxed' src='frame.html'></iframe> // js

    3.2K01发布于 2017-07-18
  • 来自专栏shigen的学习笔记

    闲不住,手写了数据文档生成工具

    个人IP:shigen逛博客的时候,发现了一个很有意思的文章:数据表结构导出工具。带着好奇,我也去DIY了一个,先看看效果:这个就是主要的程序界面,可以选择生成md文档或者docx文档。 总结做一波小总结:其实数据文档生成,就是用一些sql语句获得对应的表信息和字段信息,使用文本拼接写入到文件里。 :{err}") return None# 获取数据中的表信息及字段注释def get_table_info(conn): tables_info = [] if conn: def generate_markdown_documentation(tables_info): documentation = "# 数据文档\n\n" documentation + = f"数据地址:{host_entry.get()}\n" documentation += f"用户名:{user_entry.get()}\n" documentation += f

    55310编辑于 2024-04-16
  • 来自专栏Cellinlab's Blog

    JS 手写: 防抖 (debounce)

    # 思路 防抖函数原理:在事件被触发 n 秒后再执行回调,如果在这 n 秒内又被触发,则重新计时 防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行。 # 场景 按钮提交 分支多次提交,只执行最后一次提交 表单验证 需要服务端验证表单的情况,只执行一段连续输入事件的最后一次 搜索联想词 # 实现 /** * @param {Function} fn * @param {Number} delay */ function debounce (fn, delay = 50) {

    67610编辑于 2023-05-17
  • 来自专栏前端小叙

    手写js中的bind

    initial-scale=1.0" /> <title>Document</title> </head> <body> <script> // 手写实现

    1.9K20编辑于 2022-06-16
  • 来自专栏柒八九技术收纳盒

    JS_手写实现

    我们来谈谈关于「JS手写」的相关知识点和具体的算法。 该系列的文章,大部分都是前面文章的知识点汇总,如果想具体了解相关内容,请移步相关系列,进行探讨。 文章list CSS重点概念精讲 JS_基础知识点精讲 网络通信_知识点精讲 好了,天不早了,干点正事哇。 new ES5、ES6继承 instanceof debounce & throttle reduce compose 合并对象 函数柯里化 深复制对象 Object.create 函数缓存 数组去重 手写 352" // "abc" Array.from与set去重 function unique(arr) { return Array.from(new Set(arr)) } ---- 手写

    1.7K20编辑于 2022-12-19
  • 来自专栏全栈私房菜

    盘点那些 JS 手写

    盘点那些 JS 手写题 1. JS 基础 1. 手写 Promise 15. 手写 Promise.all 「语法」 Promise.all(iterable); iterable:一个可迭代对象,如 Array 或 String。 是此次传进来的数值5,m值还是上一步中的7,所以add(m+n)=add(7+5)=add(12),此时m=12,并且返回temp函数 由于后面没有传入参数,等于返回的temp函数不被执行而是打印,了解JSjs对象转化为树形结构 // 转换前: source = [{ id: 1, pid: 0, name: 'body' }, { id: 2, pid: 1, name: 'title 手写一个 sleep / delay 函数 sleep 函数既是面试中常问到的一道代码题,也是日常工作,特别是测试中常用的一个工具函数。

    1.8K30编辑于 2022-10-24
  • 来自专栏Cellinlab's Blog

    JS 手写: call、apply、bind

    call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。

    2.1K30编辑于 2023-05-17
  • 来自专栏进击的大前端

    手写Koa.js源码

    第二篇文章是看了Express的基本用法,更主要的是看了下他的源码:手写Express.js源码 Express的源码还是比较复杂的,自带了路由处理和静态资源支持等等功能,功能比较全面。 Koa代码已经上传GitHub,拿下来,一边玩代码一边看文章效果更佳:github.com/dennis-jian… 简单示例 我写源码解析,一般都遵循一个简单的套路:先引入库,写一个简单的例子,然后自己手写源码来替代这个 从上面两个例子的代码来看,Koa跟Express有几个明显的区别: ctx替代了req和res 可以使用JS的新API了,比如async和await 手写源码 手写源码前我们看看用到了哪些API,这些就是我们手写的目标 本文的手写源码全部参照官方源码写成,文件名和函数名尽量保持一致,写到具体的方法时我也会贴上官方源码地址。 Express源码可以看我之前这篇文章:手写Express.js源码 Koa的思路看起来更清晰,Koa本身的只是一个内核,只有中间件功能,来的请求会依次经过每一个中间件,然后再出来返回给请求者,这就是大家经常听说的

    1.7K20发布于 2020-11-11
  • 来自专栏前端技术分享小合集

    js高频手写题总结

    fn; } fn.toString = function() { return _args.reduce((sum, cur) => sum + cur); } return fn;}前端手写面试题详细解答使用 val; } } else { // 处理没有 value 的参数 paramsObj[param] = true; } }) return paramsObj;}手写 = a - b判断是否是电话号码function isPhone(tel) { var regx = /^1[34578]\d{9}$/; return regx.test(tel);}手写 // 手写简化版// 节流函数const throttle = (fn, delay = 500) => { let flag = true; return (...args) => { if 是此次传进来的数值5,m值还是上一步中的7,所以add(m+n)=add(7+5)=add(12),此时m=12,并且返回temp函数由于后面没有传入参数,等于返回的temp函数不被执行而是打印,了解JS

    1.1K60编辑于 2022-09-24
  • 来自专栏前端面试题总结

    js进阶手写常见函数

    JavaScript进阶的必要性 无论是学习react还是vue,它们都是js的应用框架。 剥去他们的壳子看到的始终是js,所以作为一个前端大厨必须要熟练掌握好js这个大勺,才能烧出一顿好菜 无论是自我提升还是应付面试以下这些手写功能是每一个前端程序员必须掌握的 1. 返回result 结果 return result } func.myApply(newObj,['55','yw']) // xmx 55 yw apply代码执行效果 图片 相关js视频讲解 节流和防抖也是闭包的应用 手写防抖代码参考 /*** * 手写防抖 */ const debounce = (func, delay) => { let timer = null; return 图片 手写节流 /*** * 手写节流 * 这里只需要注意和防抖不同的时 不会清除定时器 */ const throttle = (func, delay) => { let flag = false

    59120编辑于 2022-10-03
  • 来自专栏进击的大前端

    手写Express.js源码

    本文照例会从Express的基本使用入手,然后自己手写一个Express来替代他,也就是源码解析。 手写源码 手写源码才是本文的重点,前面的不过是铺垫,本文手写的目标就是自己写一个express来替换前面用到的express api,其实就是源码解析。 本文所有手写代码全部参照官方源码写成,方法名和变量名尽量与官方保持一致,大家可以对照着看,写到具体的方法时我也会贴出官方源码的地址。 Express.js的上述代码其实也是实现了类似的效果,setprototypeof又是一个第三方,作用类似Object.setPrototypeOf(obj, prototype),就是给一个对象设置原型 layer.match layer.match是用来检测当前path是否匹配的函数,用到了一个第三方path-to-regexp,这个可以将path转为正则表达式,方便后面的匹配,这个在之前写过的

    6.2K30发布于 2020-11-04
  • 来自专栏Cellinlab's Blog

    JS 手写: 发布订阅 (PublishSubscribe & EventBus)

    # EventEmit export default class EventEmitter { constructor () { this.events = {}; this.maxListeners = 10; } on (eventName, listener) { if (this.events[eventName]) { if (this.events[eventName].length >= this.maxListeners) {

    85410编辑于 2023-05-17
领券