答:字符串String,数值Number,布尔 boolean,null,undefined,对象,数组
一个完整的AJAX请求包括五个步骤:
创建XMLHTTPRequest对象
使用open方法创建http请求,并设置请求地址:
xhr.open(get/post , url , async , true(异步) )经常使用前三个参数
设置发送的数据,用send发送请求
注册事件(给ajax设置事件)
获取相应并更新页面
NaN 非数字 但是用typeof 检测是 Number 类型
js中null与undefined的区别:
相同点:用if判断时,;两者都会被转为false
不同点:
闭包可以简单理解成:定义在一个函数内部的函数。其中一个内部函数在包含他们的外部函数之外被调用时,就会形成闭包。
特点:
js高程上将:事件委托就是利用事件冒泡,只制定一个时间处理程序,就可以管理某一类型的所有事件。
事件委托,称事件代理,是js中很常见的绑定事件的技巧,事件委托就是把原本需要绑定在子元素的所有响应事件委托给父元素,让父元素担当事件监听的职务,事件委托的原理是DOM元素的事件冒泡。
一个事件触发后,会在子元素和父元素之间传播,这种传播分为三个阶段:
事件委托/事件代理就是利用事件冒泡的机制把里层需要响应的事件绑定到外层
阻止事件冒泡
cookie是小饼干的意思。说以cookie确实非常小,他的大小限制为4kb左右。他的主要用途有保存用户登录信息。
localStorage
localStorage是HTML5标准中新加入的技术,他并不是什么划时代的新东西。早在IE6时代,就有一个叫userData的东西用于本地存储,而当时考虑到浏览器的兼容性,更通用的方案是Flsah。而如今,localStorage北大多数浏览器所支持,如果你的网站需要兼容IE6+,那么使用userData方案是不错的选择
sessionStorage
sessionStorage与localStorage的接口类似,但保存数据的生命周期与localStorage不同。session这个词的翻译的意思就是“会话”。而sessionStorage是一个前端的概念,他只是可以将一部分数据在当前会话中保存下来,刷新页面数据依旧存在。但当页面关闭后,
sessionStorage中的数据就会被清空。
散着的异同
const和let、模板字符串、箭头函数、函数的参数默认值、对象和数组解构、for…of 和 for…in、ES6中的类
面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想是将数据作为第一位,这是对数据的一种优化,操作起来更加的方便,简化了过程。
js本身是没有class类型的,但是每个函数都有一个prototype属性,prototype指向一个对象,当函数作为构造函数时,prototype就起到类似class的作用
面向对象有三个特点
什么是原型?
??任何对象实例都有一个原型,也叫原型对象,这个原型对象由对象的内置属性proto指向它的构造函数的prototype指向的对象,即任何对象都是由一个构造函数创建的,但是不是每一个对象都有prototype,只有方法才有prototype。
什么是原型链?
??原型链基本思想是利用利用原型让一个引用类型继承另一个引用类型的属性和方法。我们知道,每个构造函数都有一个原型对象,每个原型对象都有一个指向构造函数的指针,而实例又包含一个指向原型对象的内部指针
??原型链的核心就是依赖对象的proto的指向,当自身不存在的属性时,就一层层的扒出创建对象的构造函数,直至到Object时,就没有proto指向了。
??因为proto实质找的是prototype,所以我们只要找到这个链条上的构造函数的prototype。其中Obiect.prototype是没有proto属性的,它==null。
??每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数对象内部的指针。我们让原型对象(1)等于另一个原型对象(2),此时原型对象(2)将包含一个指向原型对象(1)的指针,再让原型对象(2)的实例等于原型对象(3),如此层层递进就构成了实例和原型的链条,这就是原型练得概念
什么是原型继承?
??每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数理想指针(constructor),而实例对象都包含一个指向原型对象的内部指针(proto)。如果让原型对象等于另一个原型对象的实例,此时的原型对象将包含一个指向另一个原型的指针(proto),另一个原型也包含着一个指向另一个构造函数的指针
(constructor)。假如另一个原型又是另一个类型的实例……这就构成了实例与原型的链条。也叫原型链
原型继承是js的一种继承方式,原型链作为实现继承的主要方法,其基本思路是利用原型让一个引用类型
继承另一个引用类型的属性和方法,
**原型继承:**利用原型中的成员可以被和其他相关的对象共享这一特性,可以实现继承,这种实现继承的方式,就叫原型继承。
什么是Promise?我们用Promise来解决什么问题?
我们都知道,Promise是承诺的意思,承诺它过一段时间会给你一个结果。
Promise是一种解决异步操作编程的方案,相比回调函数和事件更合理和更强大。
从语法上讲,promise是一个对象,从它可以获取异步操作的信息。
Promise有三种状态
1、pending 初始状态也叫等待状态
2、fulfiled成功转态
3、rejected失败状态
Promise的两个特点
1、Promise对象的状态不受外界影响
2、Promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可逆
Promise的三个缺点
1、无法取消Promise,一旦新建他就会立即执行,无法中途取消
2、如果不设置回调函数,Promise内部抛出的错误,不会映到外部
3、当处于pending(等待)状态时,无法得知目前进展到哪一个阶段,是刚刚开始还是即将完成
Promise是用来解决两个问题的
1、回调地狱,代码难以维护,尝尝第一个的函数的输出是第二个函数的输入这种现象
2、promise可以支持多并发的请求,获取并发请求中的数据这个
这个Promise可以解决异步的问题吗,本身不能说Promise是异步的
Async就是generation和Promise的语法糖,async就是将generation的 * 换成async,将yiled换成awite。
函数前必须加一个async,异步操作方法前加一个await关键字,意思就是等一下,执行完了再继续走,注意:await只能在async函数中运行,否则会报错
Promise如果返回的是一个错误的结果,如果沒有做异常处理就会报错,所以try…catch捕获一下异常就可以了。
分四个步骤
??从定义中可以看出,call和apply都是调用对象的一个方法,用另一个对象替换当前对象,而不同之处在于传递的参数,apply最多只能有两个参数—新this对象和一个数组argArray,如果arg不是数组则会报错。
??相同点:两个方法产生的作用是完全一样的。call,apply作用就是借用别人的方法来调用,就像调用自己的一样。
??不同点:方法传递的参数不同。
出现跨域问题的原因:
在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。在请求的过程中我们要想获取数据一般都是post/get请求,所以…跨域问题出现。
同源策略:
是由NetScape提出的一个著名的安全策略。所谓的同源,指的是协议,域名,端口号相同,浏览器出于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明授权的情况下,不能读写对方的资源。
在JavaScript中,this通常指向我们正在执行的函数本身,或者是指向该函数所属的对象。
jsonp其实就是一个跨域解决方案。
js跨域请求数据是不可以的,但是js跨域请求js脚本是可以的。
所以可以把要请求的数据封装成一个js语句,做一个方法的调用。
跨域请求js脚本可以得到此脚本。得到js脚本之后立即执行。
可以把数据作为参数传递到方法中。就可以获得数据。从而解决跨域问题。
jsonp原理(动态创建scrpit标签,回调函数)
浏览器在js请求中,是允许通过script标签的src跨域请求,可以在请求的结果中添加回调方法名,在请求页面中定义方法,就可以获取到跨域请求的数据。
为什么不是真正的ajax?
创建类有三种:
继承有六种:
同步(阻塞的)
异步(非阻塞的)
比如:同步,你在看电影,到吃饭时间了,但是你的电影没有看完,你就等电影看完再去吃饭
??异步:你在看电影,到吃饭时间了,但是你的电影虽然没有看完,但是你的点了外卖一边吃一边看
同步(阻塞)异步(非阻塞)这两个关注的是程序在等待调用结果时的状态
弱类型语言实现相当于强类型语言来说,在强类型语言中,变量类型有很多种,比如int char float Boolean 不同类型的相互转换有时需要强制转换,而javascript只有一种类型var,为变量赋值时会自动判断类型并转换,所以是弱类型语言。
For遍历对象自身的和继承可枚举的属性,也就是说会包括那些原型链上的属性
Map方法不会对空数组进行检测,map会返回一个新数组,不会对原数组产生影响
apply() 接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。
call() 方法第一个参数与apply() 方法相同,但传递给函数的参数必须列举出来。
无论深浅,都是需要的,当深拷贝发生时通常表明存在着一个聚合关系,当浅拷贝发生时,通常表明存在着相识关系
举个简单的例子:当实现一个组合模式Composite Pattern时通常都会实现深拷贝
当实现一个观察者模式Observe Pattern时,就需要浅拷贝
内存泄漏是指一块被分配的内存既不能使用也不能回收,知道浏览器进程结束
释放内存的方法:赋值为null
csrf(跨站点请求伪造)攻击者在用户已经登录目标网站之后,有使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份再攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的
预加载是指页面完成加载之前,提前将所需资源下载,之后使用的时候从缓存中调用
懒加载是延迟加载,按照一定的条件或者需求等到满足条件的时候在加载对应的资源。
两者主要区别是一个是提前加载,一个是延迟加载甚至不加载。 懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。
【排序算法】之lowb三人组冒泡、插入、选择 什么是lowb三人组 冒泡排序bubble so...
计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持...
一、正则表达式概述 二、正则表达式在VBScript中的应用 三、正则表达式在VavaScr...
一石激起千层浪,继中国区浩浩荡荡的大裁员告一段落之后,甲骨文并未因此收起手...
歌词编辑器 歌词编辑器 第一步:选择要播放的歌曲并播放 第二步:填写全部的歌词...
ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可...
vbs:把一段文字中指定字符颜色变成红色的正则 functionc(Tstr,Word) Dimre Setre...
微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很...
前言 相信大家都知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也...
本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javas...