![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
js深入
前端攻城fff
一个菜鸟
展开
-
Promise Api和手写Promise类方法
API类方法Promise.resolve()接收一个参数, 返回一个执行该参数后的promise(promise构造中执行是立即执行的)对于一般数值类参数, 相当于new Promise并且执行了resolve(参数)注意空值的话相当于resolve()如果是一个promise, 则直接返回这个promisePromise.reject()参数只能是被拒绝的原因, 返回一个拒绝的promisePromise.all()接收的参数为多个promise组成的可迭代对象,原创 2022-01-22 22:09:29 · 830 阅读 · 1 评论 -
call,apply, bind
apply手写的思路: 在Function上添加方法, 这样所有函数都拥有该方法可直接调用接收需要绑定的对象和函数调用时传入的参数并判断对象是否存在创建一个唯一值, 让对象的唯一值属性=this, 也就是调用该方法的函数执行对象中的唯一值属性, 即使用对象调用函数, 完成了this绑定删除对象的唯一值属性/* apply context: 传入的要绑定this到的对象 args: 原函数执行时传入的参数, 为一个数组*/Function.prototype.myApply =原创 2022-01-22 22:10:16 · 431 阅读 · 0 评论 -
js的this
thisthis在函数被调用时绑定的, 它指向哪里由函数在哪里调用以及如何被调用决定。默认绑定在不能使用其他绑定规则时执行的规则,一般为函数独立调用默认绑定给全局, 浏览器为window, node为globalvar num = 1function a(){ console.log(this.num)}a() // 1隐式绑定函数调用是在某个对象身上触发的, 即调用位置存在执行上下文, 如obj.fun(), 此时this会绑定给调用者特殊情况:虽然为对象调用, 但是__pro原创 2022-01-22 22:09:15 · 731 阅读 · 0 评论 -
发布-订阅
/*发布订阅模块, 使用立即执行函数是为了让其返回的函数引用的msg容器为私有msg不是列表, 其为一个对象, 对象里面消息名对应的值为列表*/var PubSub = (function () { var msg = {} return { /* 订阅消息, 参数为消息名和回调函数 判断如果消息名存在于msg中并且没有重复的订阅, 就像该消息名的值(列表)中添加该回调函数 */ subscribe: function (type, fn) {原创 2022-01-22 22:10:34 · 524 阅读 · 0 评论 -
js实现多态
js的多态子类对父类方法的重写, 这个会默认执行子类的方法, 即实现多态不同子类执行父类的同名方法会有不同的结果, 即下面这种还有函数参数个数, 参数类型的多态不同子类执行父类的同名方法会有不同的结果实现方式父类中调用未来子类的方法子类的创建的时候, 写自己的方法, 继承父类, 调用父类的同名方法的时候, 父类原型上的this此时指向子类这个时候就会调用不同子类的方法 function Base() { Base.prototype.initfun = funct.原创 2022-01-22 22:04:41 · 1348 阅读 · 0 评论 -
sort的参数
Array的sort方法默认是将调用该方法的数组里面元素全都转换为字符串, 然后比较每一项对应utf-16对应的单元值大小排序的, 比如9会排在89前面如果想要利用该方法将一个无序integer数组排序的话, 需要给它的参数中传一个回调函数, 该回调函数作为排序的依据如果都是integer类型的话, 简洁写法// 升序arr.sort((a, b) => a - b)// 降序arr.sort((a, b) => b - a)说明:如果 compareFunction(a,原创 2021-09-19 22:46:47 · 771 阅读 · 0 评论 -
vue中原生语法实现瀑布流及懒加载(无限加载)(利用IntersectionObserver)
2.vue中原生语法实现瀑布流及懒加载(利用IntersectionObserver)如果要实现懒加载, 第一反应不过是计算可视高度即滚动条之间的距离来进行对比都2021年了, 如果面试官让手写一个懒加载, 毫无亮点了已经下面介绍一种实现懒加载的方式, 并结合瀑布流首先先写出瀑布流dom结构以及样式<template><!-- 结构很简单, 就一个容器, 里面放一个列表, 列表循环遍历 --> <div class="waterfall wf-wrap" re原创 2021-08-06 11:27:41 · 3097 阅读 · 4 评论 -
Math.min.apply(null, arr)详解 + apply, call, bind
共同点: 三个都可以改变this指向apply与callapply与call类似, 在执行时调用以改变this指向, 有两个参数, 第一个就是需要绑定this的对象第二个参数即需要传递的参数, 它俩的主要区别就是第二个参数,call可以添加多个参数, 而apply只能添加一个, 且这个参数必须是数组b.call(a,1,2) // 将**a**中的this指向**b**b.apply(a,[10,1]) // 同上更重要的一点是, apply可以改变参数的形式let arr = [1,原创 2021-08-06 01:11:28 · 2151 阅读 · 0 评论 -
js的两种继承及合并优化
**原型链继承**<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><script type="text/javascript"> //父类型 function Person() { this.name原创 2021-06-01 11:07:22 · 239 阅读 · 0 评论 -
js高阶函数+防抖与节流
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> div{ margin: 0 auto; height: 200px; width: 200px; back原创 2021-06-01 11:03:59 · 113 阅读 · 0 评论