![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript
maliu_
大帅B
展开
-
html结构转pdf和docx( 附Blob对象传递上传文件 )
Blob对象可用于传递给后端进行上传文件操作,但是通过return是不可行的,所以此处选择通过回调函数的形式进行参数传递。原创 2022-10-28 09:45:39 · 526 阅读 · 0 评论 -
axios取消频繁点击的请求
axios取消频繁点击的请求原创 2022-09-09 09:57:37 · 166 阅读 · 0 评论 -
JS继承各模式优缺点
【代码】JS继承各模式优缺点。原创 2022-08-30 10:18:07 · 162 阅读 · 0 评论 -
【踩坑】使用fill创建二维数组
我们只想改变第一个数组的数据,结果全部都会修改,说明二维数组的每一个元素都是引用的同一个内存地址。通过map来给每一个元素返回空数组即可。原创 2022-07-18 15:34:42 · 152 阅读 · 0 评论 -
利用Set封装历史记录
封装原创 2022-07-13 23:57:26 · 72 阅读 · 0 评论 -
函数柯里化的基本了解
函数柯里化原创 2022-06-20 21:46:51 · 57 阅读 · 0 评论 -
JavaScript标签模板
JS标签模板原创 2022-06-19 12:00:24 · 198 阅读 · 0 评论 -
in和hasOwnProperty的检测差异
(1) in运算符:如果指定的属性在指定的对象或其原型链中,则in 运算符返回true(2)hasOwnProperty:检测一个对象是否含有特定的自身属性,返回一个布尔值 /* in */const user = {name:"Yaohao"}console.log('name' in user) // trueObject.prototype.age = 20console.log('age' in user) // true//此处为true的原因是user的原型就是Object.pr原创 2022-05-24 17:21:17 · 70 阅读 · 0 评论 -
JS中实例方法、静态方法、原型方法的关系解读
js中实例方法、静态方法和原型方法详解转载 2022-05-13 11:21:17 · 157 阅读 · 0 评论 -
Object.create()
Object.create()用于创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。绝大多数人的用法都是用于创建一个空对象,或者用于对象的浅拷贝,比如:var o1 = {name:'csdn'}var o2 = Object.create(o1)console.log(o2.name) // csdno2.name = 'w3c'console.log(o1.name) // csdn// 这样就完成了o2对于o1的浅拷贝其中的原理其实是把o2的__proto__指原创 2022-02-20 11:44:18 · 185 阅读 · 0 评论 -
理解prototype、getPrototypeOf和_proto_之间的不同
var u = new User('Lix', '123456');console.log(Object.getPrototypeOf(u)); // User { toString: [Function], checkPassword: [Function] }console.log(u.__proto__); // User { toString: [Function], checkPassword: [Function] }console.log(User.prototype); // U原创 2021-12-09 17:29:46 · 130 阅读 · 0 评论 -
JavaScript 侦测手机浏览器的五种方法
JavaScript 侦测手机浏览器的五种方法转自 阮一峰的网络日志转载 2021-12-01 17:14:52 · 97 阅读 · 0 评论 -
浏览器提供的对象
1.window 表示浏览器的窗口。 有innerWidth和innerHeight这两个属性。可以获取浏览器的内部宽高。对应的还有outerWidth和outerHeight这两个属性,获取浏览器窗口的整体的宽高。内部宽高是指除去菜单栏、工具栏、边框等占位元素后,用于显示网页的净宽高。// 兼容写法var width = window.innerWidth || document.body.clientWidth2.navigator 表示浏览器信息。navigator.appName:转载 2021-11-13 14:52:12 · 145 阅读 · 0 评论 -
前端面试题:js的预编译与运行时
前端面试中有时候会被问到你了解js的编译时和运行时吗?不知道你们遇到过没,反正小编遇到过哈!这道题搞懂了,说明你前端基础数比较扎实的!今天咱们就来说一说这个难啃的骨头。首先我们了解下编译时发生了什么?先说下函数编译时发生的事情。1.创建AO对象(Activation Object(执行期上下文))2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined3.将实参值与形参相统一4.在函数中找函数声明,作为属性名,值为函数体下面我们看下这个程序:function test原创 2021-11-01 08:47:01 · 434 阅读 · 0 评论 -
前端面试题之mouseover和mouseenter的区别
前端面试题之mouseover和mouseenter的区别转载 2021-10-24 15:06:06 · 72 阅读 · 0 评论 -
JavaScript 出现 NaN 的情况大总结
[转载]JavaScript 出现 NaN 的情况大总结转载 2021-10-03 16:34:00 · 340 阅读 · 0 评论 -
深拷贝与浅拷贝的区别
1.基本数据类型String、Number、Boolean、Undefined、Null2.引用数据类型Function、Array、Object3.浅拷贝浅拷贝就是拷贝一个对象的数据,但是两者的指针会指向同一个引用地址。假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝。var a=[1,2]var b=a;a[0]=99;console.log(b[0]); // 99当赋值操作b=a时,数组b能够得到数组a的数据,但是当数组a中的数据改变时,会导致数原创 2020-11-25 14:34:47 · 85 阅读 · 0 评论 -
寄生组合式继承
在"组合继承"这篇文章的末尾说到出现两份friends属性,原因很简单,第一次是在构造函数Student内部,第二次是创建构造函数Student原型对象时。解决思路:在设置子类构造函数的原型对象(Student.prototype)时, 只要父类构造函数的原型对象(Person.prototype)属性。解决方法1.拷贝父类构造函数的原型对象2.借助父类构造函数的原型对象, 创建出来一个空...原创 2019-06-24 00:40:02 · 93 阅读 · 0 评论 -
组合继承
本篇将讲解如何解决原型链继承中出现的问题:继承过来的实例属性,如果是引用类型,会被多个子类实例共享。1.为什么会出现子类实例共享引用类型的问题?因为数组是引用类型,从图中可知Student的实例stu1和stu2的__proto__都指向了p(即Student.prototype),因此他们操作的都是同一个内存地址,这里不难理解。所以我们解决该问题的思路就在于把friends这个属性一份给...原创 2019-06-23 14:36:58 · 149 阅读 · 0 评论 -
原型链继承
1.创建两个构造函数这里我们创建了Person和Student两个构造函数function Person() { this.friends = ["狗","猫"]}function Student(name) { this.type="学生"; this.name = name;}var stu = new Student("张三");console.log(stu.type)...原创 2019-06-23 10:52:30 · 113 阅读 · 0 评论 -
prototype随记
1.什么是prototype1. 每个函数都能构建出一个对象, 这个对象内部有个属性指向着这个函数的原型对象;2. 原型对象本质也是一个对象,也是由另外一个构造函数构造出来, 也指向那个构造函数的原型对象;按照我本人的理解,任何构造函数(注意是函数,并非对象)都存在原型对象,并且prototype指针指向这个原型对象,如下图所示我们自定义的构造函数Person,构造函数Person的pr...原创 2019-06-22 20:08:46 · 93 阅读 · 0 评论