
JavaScript
Lele___
这个作者很懒,什么都没留下…
展开
-
面试题——call、apply、bind区别及其实现原理
call、apply、bind实现原理区别:call、apply、bind都是为了改变函数中的this指向。call和apply的唯一区别就是方法传递的参数不同。call/apply和bind的区别,call/apply是立即把函数执行,bind不是立即把函数执行,只是预先把this和后期需要传递的参数存储起来。call用法var callObj = { 0: 1111, 1: 2222, 2: 3333, length: 4 };var param = [].slice.call(c原创 2021-04-09 18:13:37 · 344 阅读 · 0 评论 -
面试题:手撕PromiseA+规范 (核心功能)
注释应该还可以:(function () { // 开启严格模式 "use strict" function Promise(executor) { var self = this, change; // 传进来的参数不是function 直接报错 if (typeof executor !== 'function') throw new TypeError(`${executor} must be an原创 2021-03-08 20:29:07 · 213 阅读 · 0 评论 -
编写一个hasPubProperty检测某个属性是否是对象的公有属性
基础版let hasPubProperty = function hasPubProperty(obj,attr){ return (attr in obj) && obj.hasOwnProperty(attr);}完美版Object.prototype.hasPubProperty = function hasPubProperty(attr){ let self = this; let protoType = Object.getPrototy.原创 2021-01-28 14:58:32 · 262 阅读 · 0 评论 -
防抖和节流
防抖是为了防止频繁触发的操作,在指定时间内我们让用户的行为只触发一次在第一次点击时/最后一次点击时(只能识别一次) function debounce(func, time, isStart) { //如果第一个参数不是function 直接提示错误 if (typeof func !== 'function') throw new TypeError("func must be required and be an function!"); //如果time不传默认300毫原创 2021-01-18 14:12:48 · 198 阅读 · 1 评论 -
事件、事件绑定、事件对象、默认行为
事件事件是浏览器赋予元素的默认行为,也可以理解为事件是天生具备的,不论我们是否为其绑定方法,当某些行为触发的时候,相关的时间都会被触发执行。浏览器赋予元素的事件行为:鼠标事件:click 点击事件(PC端:频繁点击N次,触发N次点击事件) 单击事件(移动端:300ms内没有发生第二次点击操作,算作单击事件行为,所以click在移动端会有300ms延迟)。click在移动端第一次点完,会等300ms如果这段时间内发生了第二次点击,算作双击事件。dbclick 双击事件contextmenu原创 2020-12-28 15:30:58 · 331 阅读 · 0 评论