![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JS
长脖子的鹿
这个作者很懒,什么都没留下…
展开
-
js数组去重
一、set方法参数值:iterator传递的是一个可迭代对象,可以将所有的元素不重复的被添加新的set中。如果不指定此参数或其值为null,则新的set为空。返回值:一个新的Set对象。属性:set.length:属性为0set.prototype:表示Set构造器的原型,可以向所有的Set对象添加新的属性。Set实例:set.prototype.constructor:返回实...原创 2019-10-13 21:09:22 · 86 阅读 · 0 评论 -
闭包及其相关整理
一、变量作用域js的作用域:局部变量和全局变量函数内部可以读取全局变量,但是在函数外部无法读取函数内部的局部变量注意点:在函数内部声明变量的时候,一定要使用var命令,如果不是,声明的就是一个全局变量二、从外部读取函数内部的局部变量function f1(){ var num=789; function f2(){ alert(num); } return f2;}v...原创 2019-10-19 12:21:45 · 163 阅读 · 1 评论 -
如何正确判断this?箭头函数的this是什么?
function foo() { console.log(this.a)}var a = 1foo()const obj = { a: 2, foo: foo}obj.foo()const c = new foo()对于直接调用foo()来说,不管foo函数被放在什么地方,this一定是window;对于obj.foo()来说,谁调用了函数,谁就是this,此...原创 2019-10-18 11:32:48 · 483 阅读 · 0 评论 -
new的原理
new内部原理:1、创建一个空对象,这个对象继承Func.prototype;2、执行构造函数,并将this指向刚刚创建的新对象;3、返回新函数function _new(){ //拿到传入参数中的第一个参数,即构造函数Func var Func=[].shift.call(arguments); //创建一个空对象obj,并让其继承Func.prototype va...原创 2019-10-17 20:05:36 · 347 阅读 · 0 评论 -
数组常用的api
一、向数组添加元素的方法Array.push();在数组的末尾处添加;会改变原有数组,返回值是添加数据后数组的新长度。Array.unshift();在数组的开头处添加,返回值是添加数组后数组的新长度;会改变原有数组splice(index,0,value1,value2,...)向数组的指定index处插入;返回的是被删除的元素;会改变原有数组二、向数组删除元素的方法1.p...原创 2019-10-16 22:00:29 · 595 阅读 · 0 评论 -
类数组和数组的区别
类数组:1、拥有length属性,其它属性(索引)为非负整数2、不具有数组所具有的的方法;3、类数组是一个普通对象,而真实的数组是Array类型常见的类数组:函数的参数arguments;DOM对象列表(通过document.querySelectorAll)得到的列表;jquery对象(比如$(“div”))类数组可以转换为数组: Array.from(arrayLike);...原创 2019-10-16 16:38:00 · 1408 阅读 · 0 评论 -
Promise的三种状态
Promise的三种状态:pending–进行中fulfilled–成功rejected–失败Promise对象,可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数,只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态resolved(已定型):1、pending到fulfilled2、pending到rejected即这两种情况发生,状态就凝...原创 2019-10-15 11:51:39 · 736 阅读 · 0 评论 -
Jsonp跨域原理
callback这个参数,callback参数就是核心所在。首先我们知道,这个get请求已经被发出去了,那么我们如何接口请求回来的数据呢,callback=func则可以帮我们做这件事。<button id="btn">点击</button> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min...原创 2019-10-13 23:24:53 · 74 阅读 · 0 评论 -
手写promise函数
手写一个promise函数:function Promise(executor) { var self = this; this.status = 'pending'; this.value = undefined; this.reason = undefined; this.onResolvedCallbacks = []; this.onRej...原创 2019-10-13 09:17:09 · 238 阅读 · 0 评论 -
ajax工作原理和原生ajax封装
一、Ajax简介Ajax是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。ajax中有个重要概念-----回调函数。先请求数据,只有在状态改变时才会执行接下来的(这个状态包括请求成功和请求失败)二、特点是一种用于创建快速动态网页的技术,对网页的某部分进行更新,不用刷新整个网页。通过在后台与服务器进行少量数据交互,ajax可以使网页实现异步更新。三、工作原理四、aja...原创 2019-10-12 20:50:05 · 97 阅读 · 0 评论 -
ajax可以将异步改成同步吗?
$.ajax({ url: '', async: false});这个方式就是将async改为false,就可以将异步改为同步啦原创 2019-10-11 09:53:26 · 213 阅读 · 0 评论 -
js延迟加载的方式
性能优化的核心思想就是快,可以预先准备数据(如缓存的使用),可以按需获取,可以分段获取等都是常见的优化手段。解题思路:1.defer属性<scriptsrc="file.js" defer></script>浏览器会并行下载 file.js和其它有 defer 属性的script,而不会阻塞页面后续处理。注:所有的defer脚本保证是按顺序依次执行的。2、as...原创 2019-10-09 16:35:41 · 128 阅读 · 0 评论 -
js的作用域与声名提升
js的作用域:1全局作用域:所有函数之外的变量,其作用范围是在整个脚本中2局部作用域:使用var定义在函数内部的变量,其作用范围是整个函数结构,超出函数 {} 花括号的范围则不能使用3块级作用域:ES6声明变量的方式:let / constlet 变量名 = 变量值;const 变量名 = 变量值;PS:注意: 使用const修饰的变量,赋值确定后,不允许再重新赋值。(一般修饰常量或者...原创 2019-10-09 17:04:08 · 60 阅读 · 0 评论 -
return、break和continue的区别
一、return用法:在函数体中遇到return语句,则结束函数执行(函数体未执行完部分不再执行),将表达式的值返回到函数调用处。使用return最多只能返回一个值!return 就是函数返回语句,但是返回的同时也将函数停止。function fn() { for(var i = 0; i < 5; i++) { if(i == 3) { ...原创 2019-09-03 11:39:06 · 903 阅读 · 0 评论 -
“ || ” 和 “ && ”
“ || ” 和 “ && ”短路运算符关于&&从前至后的顺序去遍历表达式,遇到false的表达式停止并返回此表达式。如果全都为true,那么就返回最后一个。关于||从前至后的顺序去遍历表达式,遇到true的表达式停止并返回此表达式。如果全都为false,那么就返回最后一个。...原创 2019-09-02 20:23:38 · 186 阅读 · 0 评论 -
判断是否为array的方法
第一种:instanceof,此方法返回的是一个布尔值var a=[1,2,34,5];console.log(a instanceof Array);//true第二种:es5定义了Array.isArray:var arr=[1,5];console.log(Array.isArray(arr));//true第三种:constructor,用的是原型链的方法var m=...原创 2019-09-02 16:16:36 · 1151 阅读 · 0 评论 -
数组
Array:数组: 保存一组数据数组对象的作用是:使用单独的变量名来存储一系列的值。(动态数组:可自动根据元素个数调用长度大小)概念:元素:数组中所保存数据的空间长度:数组中所保存元素的个数下标(索引):数组中元素的编号,从0开始编号,到(数组的长度-1)结束使用:创建数组对象:var arr = [];//直接量var arr = new Array();//创...原创 2019-09-02 14:58:56 · 194 阅读 · 0 评论 -
this的指向问题
一:纯粹的函数调用var x = 1;function test() {console.log(this.x) //指向window,输出1}test() //这个其实是window.test()的简写此时是window调用的test方法,所以函数体里的this就指向了window。二:作为对象的方法调用function test () {console.log(this.x...转载 2019-10-09 20:59:42 · 121 阅读 · 0 评论 -
高效总结call、apply、bind的异同
原创 2019-10-09 21:19:28 · 54 阅读 · 0 评论 -
原型链
总结1.每个函数对象都有一个 prototype 属性,这个属性就是函数的原型对象。2.原型链是JavaScript实现继承的重要方式,原型链的形成是真正是靠__proto__ 而非prototype...原创 2019-09-29 15:31:13 · 58 阅读 · 0 评论