js
肥猫哈哈哈
冲
展开
-
keep-alive
1.概念keep-alive是vue内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 transition 相似,keep-alive 是一个抽象组件:它自身不会渲染成一个 DOM 元素,也不会出现在父组件链中。2.应用在组件切换过程中 把切换出去的组件保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性3.生命周期函数被包含在 keep-alive 中创建的组件,会多出两个生命周期的钩子: activated 与 deactivated1.原创 2021-06-01 20:12:44 · 75 阅读 · 0 评论 -
事件委托(事件代理)
1.概念事件委托,又名事件代理。事件委托就是利用事件冒泡,就是把子元素的事件都绑定到父元素上。如果子元素阻止了事件冒泡,那么委托也就没法实现了。使用事件委托的好处1.提高性能2.减少了事件绑定3.从而减少内存占用可以实现当新增子对象时无需再次对其绑定(动态绑定事件)假设列表项li就几个,我们给每个列表项都绑定了事件;在很多时候,我们需要通过 ajax 或者用户操作动态的增加或者删除列表项li元素,那么在每一次改变的时候都需要重新给新增的元素绑定事件,给即将删去的元素解绑事件;如果用了事原创 2021-05-30 20:44:34 · 496 阅读 · 0 评论 -
什么是闭包
1、概念闭包函数:声明在一个函数中的函数,叫做闭包函数。闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。2、特点让外部访问函数内部变量成为可能;局部变量会常驻在内存中;可以避免使用全局变量,防止全局变量污染;会造成内存泄漏(有一块内存空间被长期占用,而不被释放)3、闭包的创建:闭包就是可以创建一个独立的环境,每个闭包里面的环境都是独立的,互不干扰。闭包会发生内存泄漏,每次外部函数执行的时 候,外部函数的引用地址不同,都会重新创建原创 2021-05-30 20:37:33 · 159 阅读 · 0 评论 -
var let const 区别
var是ES5提出的,let和const是ES6提出的。const声明的是常量,必须赋值一旦声明必须赋值,不能使用null占位。声明后不能再修改如果声明的是复合类型数据,可以修改其属性let和var声明的是变量,声明之后可以更改,声明时可以不赋值var允许重复声明变量,后一个变量会覆盖前一个变量。let和const在同一作用域不允许重复声明变量,会报错。var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。let和c.原创 2021-05-30 20:33:11 · 87 阅读 · 0 评论 -
作用域、作用域链、自由变量、变量提升
一、作用域是指一个变量或函数在程序哪些地方可以被访问到二、作用域链作用域链就是变量的查找机制,当我们引用一个变量时,浏览器会首先在当前作用域中查找,看当前作用域中是否有这样一个变量,如果有就直接引用,如果没有就继续向上一级作用域查找,直到找到window, 在window中会先查看有没有需要查找的变量,没有的话会查找在window中有没有需要查找的属性,如果还没有就会报错三、自由变量变量提升(预解释,预处理): 在执行js代码之前,浏览器会对所有带var或者function的变量进行提原创 2021-05-27 17:11:35 · 79 阅读 · 0 评论 -
this指向问题、new的过程
一、this指向问题总结:在浏览器中,在全局范围内this指向window在构造函数中,this指向new出来的新对象在函数中,this指向调用它的对象call、apply、bind的this是被强绑定在指定的对象上前四种方式,this是在调用时确定,是动态的箭头函数中的this比较特殊,箭头函数的this是父作用域的this,不是调用时的this箭头函数的this指向是静态的,声明时就确定了6.apply、bind、call都是js给函数内置的一些API,调用他们可以为函原创 2021-05-27 16:58:38 · 290 阅读 · 0 评论 -
call/apply/bind
1、相同点:三个函数都会改变this的指向(调用这三个函数的函数内部的this)2、不同点:1、bind会产生新的函数,(把对象和函数绑定死后,产生新的函数)2、call和apply不会产生新的函数,只是在调用时,绑定一下而已。3、call和apply的区别,第一个参数都是要绑定的this,apply第二个参数是数组(是函数的所有参数),call把apply的第二个参数单列出来。bind语法:func.bind(thisArg[, arg1[, arg2[, ...]]])t原创 2021-05-27 07:53:01 · 89 阅读 · 0 评论 -
原型和原型链
一、原型是什么每个函数都有一个prototype(原型)属性,这个属性都有一个指针,指向一个对象,这个对象包含由特定类型所有实例共享的属性和方法,我这里就给他安置了一个辈分——对象的父亲。使用原型的好处是什么呢? 可以让所有对象实例共享原型包含的方法和属性。利用原型是当前构造函数创建的对象的父类,这个特点我们可以提取对象的公共属性和方法放在原型中,从程序的视角中具有封装性1.1 原型的构成:原型的属性和方法+constructor function Car(color) { thi原创 2021-05-26 21:26:36 · 76 阅读 · 0 评论 -
argument
1.什么是arguments?arguments是一个类似于数组的对象,对应于传递给函数的参数,他有length属性,有;arguments[ i ]来访问对象中的元素,但是它不能用数组的一些方法。例如push、pop、slice等。原创 2021-05-26 07:55:42 · 173 阅读 · 0 评论 -
数据类型判断
1.typeof()基本数据类型中:Number,String,Boolean,undefined 以及引用数据类型中Function ,可以使用typeof检测数据类型,分别返回对应的数据类型小写字符。另:用typeof检测构造函数创建的Number,String,Boolean都返回object基本数据类型中:null引用数据类型中的:Array,Object,Date,RegExp。不可以用typeof检测。都会返回小写的object2.instanceof除了使用typeof来判原创 2021-05-24 19:57:52 · 91 阅读 · 0 评论 -
js数据类型
一、数据类型简介数据类型分为两种:基本数据类型和引用数据类型常用的基本数据类型有:undefined、null、number、boolean、string常用的引用数据类型有:js的引用数据类型也就是对象类型Object,比如:Object、array、function、data等1.引用类型的值可以改变2.引用类型可以添加属性和方法3.引用类型的赋值是对象引用二、数据类型1.Number类型number 数据类型包括整数和浮点数1.浮点数的最高精度是17位2.浮原创 2021-05-24 19:52:56 · 126 阅读 · 0 评论 -
手写深拷贝
一、什么是深拷贝?创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”,新对象跟原对象不共享内存,修改新对象不会改到原对象二、为什么要进行深拷贝?我们希望在改变新的数组(对象)的时候,不改变原数组(对象)三、如何进行深拷贝?(三种)json对象JSON.parse(JSON.stringify(a)): a 只能是扁平对象//不能拷贝 function,会直接丢弃,yeconsole.log('JSON 深拷贝a', JSON.p原创 2021-05-23 20:53:17 · 115 阅读 · 0 评论 -
数组的方法
数组方法push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。unshift():将参数添加到原数组开头,并返回数组的长度 。sort():按升序排列数组项——即最小的值位于最前面,最大的值排在最后面。reverse():反转数组项的顺序。concat() :将参数添加到原数组中。这个原创 2021-05-14 16:57:35 · 114 阅读 · 0 评论