总结就是形成自己的js知识网络,提升自己,加油!
开始做吧
1.介绍js的基本数据类型
答案: ,空,,,
2、js中有哪些内置对象?
答:数据封装类对象:、Array、、
其他对象:,,数学,日期,,错误
3.对该对象的理解
答:this始终指向函数的直接调用者(而不是间接调用者);
如果有new关键字,this指向new出来的对象;
在事件中,this 指向触发该事件的对象。 特别地,IE 中的 this 总是指向全局对象。
4. eval 的作用是什么?
答:它的作用是将对应的字符串解析成JS代码并运行;
你应该避免使用eval,它不安全而且非常消耗性能(两次,一次解析成js语句,一次执行)。
将JSON字符串转换为JSON对象时,可以使用eval,var obj =eval('('+ str +')')。
5. 如何在 DOM 中添加、删除、移动、复制、创建和查找节点
6. null 和有什么区别?
null是一个对象,表示“无”,转换为数值时为0; null 是表示“无”的原始值,转换为数值时为 NaN。
:
(1) 当变量被声明但未赋值时,它等于。
(2)调用函数时,没有提供应该提供的参数,而参数等于。
(3) 该对象没有指定的属性,该属性的值为。
(4)当函数没有返回值时,默认返回。
无效的:
(1) 作为函数的参数,意味着函数的参数不是对象。
(2)作为对象原型链的终点。
7. new 操作员具体是做什么的?
(1)创建一个空对象,this变量引用该对象,同时也继承该函数的原型。
(2)给this引用的对象添加属性和方法。
(3)新创建的对象通过this引用,最后隐式返回this。
8.你懂JSON吗?
JSON() 是一种轻量级的数据交换格式。 它基于 的子集。 数据格式简单,易于读写,占用带宽小。
格式:使用键值对,例如:{"age":"12", "name":"back"}
9. call()和apply()的区别和作用是什么?
答:apply()函数有两个参数:第一个参数是上下文,第二个参数是参数数组。 如果上下文为空,则使用全局对象。
例如: .apply(this,[1,2,3]);
call()的第一个参数是上下文,后面是实例传入的参数序列。
例如: .call(this,1,2,3);
10. 如何获得UA?
11、哪些常见操作会导致内存泄漏?
内存泄漏是指在您不再拥有或不再需要它之后仍然存在的任何对象。
垃圾收集器定期扫描对象并计算引用每个对象的其他对象的数量。 如果一个对象的引用次数为0(没有其他对象引用该对象),或者该对象的唯一引用是循环的,那么该对象的内存就可以被回收。
使用字符串而不是函数作为第一个参数会导致内存泄漏。
闭包、控制台日志、循环(当两个对象相互引用并相互保留时就会发生循环)。
12. 线程和进程的区别
一个程序至少有一个进程,一个进程至少有一个线程。
线程的划分规模比进程的划分规模小,使得多线程程序具有高并发性。
另外,进程在执行时拥有独立的内存单元,多个线程共享内存,从而大大提高了程序的运行效率。
线程在执行过程中仍然与进程不同。 每个独立的线程都有一个程序执行的入口点、一个顺序执行序列和一个程序的出口点。 但线程不能独立执行,必须存在于应用程序中,而应用程序提供了多线程执行控制。
从逻辑上看,多线程的含义是在一个应用程序中,可以同时执行多个执行部分。 但操作系统并不将多个线程视为多个独立的应用程序来实现进程调度管理和资源分配。 这是进程和线程之间的重要区别。
13.如何解决跨域问题
JSONP:
原理是:动态插入标签,通过标签引入一个js文件。 js文件加载成功后,就会执行我们在url参数中指定的函数,并传入我们需要的json数据作为参数。
由于同源策略的限制,只允许请求当前来源(域名、协议、端口)的资源。 为了实现跨域请求,可以通过标签实现跨域请求,然后在服务器端输出JSON数据并执行回调函数来解决问题。 跨域数据请求。
优点是兼容性好,简单易用,支持浏览器和服务器双向通信。 缺点是只支持GET请求。
JSONP:json+(内填充),顾名思义,就是将JSON填充到一个盒子里
16.ES6的理解
添加了模板字符串(提供简单的字符串插值功能)、箭头函数(运算符左边是输入参数,右边是运算和返回值=>。)、for-of(用于迭代数据——例如数组中的值。)对象可以完美地被变量和默认参数替换。 ES6 将对象纳入规范并提供原生对象。 添加了用于声明变量的 let 和 const 命令。 添加了块级范围。 let 命令实际上添加了块级作用域。 ES6规定var命令和命令声明的全局变量是全局对象的属性; let 命令、const 命令和 class 命令声明的全局变量不是全局对象的属性。 。 还有模块概念的引入。
17. 你使用过哪些设计模式?
(1)工厂模式:
主要好处是可以通过使用工程方法而不是new关键字来消除对象之间的耦合。 通过将所有实例化代码集中在一个位置来防止代码重复。
(2)工厂模式解决了重复实例化的问题,但是还有一个问题,就是识别问题,因为无法弄清楚它们是哪个对象实例。
(3) 构造函数模式
使用构造函数方法不仅解决了重复实例化的问题,还解决了对象识别的问题。 该模式与工厂模式的区别在于:
构造方法没有显式创建对象(new());
直接给这个对象赋值属性和方法;
没有句子。
(4)原型链模式
(5) 构建与原型链结合模式
18. 说说你对闭包的理解
使用闭包的主要目的是设计私有方法和变量。 闭包的好处是可以避免全局变量的污染。 缺点是闭包会驻留在内存中,增加内存使用量。 使用不当很容易造成内存泄漏。在js中,函数就是闭包,只有函数才有作用域的概念。
闭包具有三个属性:
(1)函数嵌套函数
(2)函数内部可以引用外部参数和变量
(3)参数和变量不会被垃圾回收机制回收
19.请谈谈缺点
虽然持久化客户端数据提供了便利并分担了服务器存储的负担,但它仍然有很多限制。
第一:每个特定域名下最多生成20个
(1)IE6以下版本最多20个
(2) IE7及以上版本最终可达50。
(3) 最多50个
(4)且无硬性限制
IE和Opera会清理最近最少使用的文件,并且随机清理它们。
最大值约为 4096 字节。 为了兼容性,一般不能超过4095字节。
IE提供了可以持久化用户数据的存储,从IE5.0开始支持。 每个数据最大可达128K,每个域名最大可达1M。 这些持久数据被放置在缓存中。 如果不清除缓存,它将一直存在。
优点:极高的可扩展性和可用性
通过良好的编程,可以控制保存在 .
通过加密和安全传输技术(SSL)降低被破解的可能性。
里面只存储非敏感数据,即使被盗也不会有重大损失。
控件的生命周期,使其不会永远有效。 小偷很可能会拿到过期的。
缺点:
数量和长度限制。 每个条目最多只能有 20 个条目,每个条目的长度不能超过 4KB,否则会被截断。
安全问题。 如果有人拦截它,该人就可以获得所有信息。 即使加密也无济于事,因为拦截者不需要知道含义,他只需按原样转发就可以达到目的。 有些状态无法保存在客户端。 例如,为了防止重复表单提交,我们需要在服务器端保存一个计数器。 如果我们把这个计数器保存在客户端,那么它就没有任何作用。
20.浏览器本地存储
在较新的浏览器中,js 和 . HTML5 中提供了替代方案。
html5中的Web包括两种存储方式: 和 。
用于在本地存储()中的数据。 这些数据只能被同一会话中的页面访问,并且当会话结束时数据将被销毁。 所以它不是持久性本地存储,只是会话级存储。
对于用于持久化的本地存储来说,除非主动删除数据,否则数据永远不会过期。
网页版和网页版的区别
这个概念与Web类似,不同的是它是为更大容量的存储而设计的。 大小有限,每次请求新页面都会发送,浪费带宽。 另外需要指定范围,不允许跨域调用。
另外Web还有、、clear等方法,不像前端开发者需要自己封装。
但它也是不可或缺的:它的作用是与服务器交互,并作为 HTTP 规范的一部分而存在,而 Web 的创建只是为了在本地“存储”数据。
浏览器支持除IE7及以下版本外,其他标准浏览器均完全支持(IE和FF需要在Web服务器中运行)。 值得一提的是,IE总是做好事。 例如,在IE7和IE6中,它实际上是本地存储解决方案。 通过简单的代码封装,可以统一让所有浏览器都支持web。
并具有相同的操作方法,例如,等等。
21. 和 的区别:
(1) 数据存储在客户的浏览器上,数据放置在服务器上。
(2)不太安全。 其他人可以分析本地存储的数据并欺骗它。 应考虑安全性来使用。
(3)会在一定时间内保存在服务器上。当访问量增加时,会占用更多的服务器性能。
使用时应考虑缓和服务器性能方面的问题。
(4)单个保存的数据不能超过4K,很多浏览器限制一个站点最多保存20个。
(5)个人建议:
将登录信息等重要信息存储为
如果需要保留其他信息,可以放在
22、如何实现浏览器中多个Tab之间的通信?
调用、本地存储等方式
23、js延迟加载的方法有哪些?
defer和async,动态创建DOM(创建,插入到DOM,加载后),按需异步加载js。
24.列出IE与其他浏览器不同的功能?
(1)IE支持、使用
(2)IE的使用、使用
(3)过滤器:IE::alpha(=num);:-moz-:num
(4) 事件方面:IE:: 是
(5)鼠标位置:IE为事件; 是 event.pageX
(6) IE使用事件; 使用事件。
(7)在IE中,只需要:0即可消除列表的原点,即可达到最终的效果; 需要设置:0;:0 和 list-style:none
(8)CSS圆角:IE7以下不支持圆角
25.创建对象的几种方式
(1)工厂模式
(2) 构造函数模式
(3)原型模式
(4) 混合构造函数和原型模式
(5)动态原型模式
(6) 寄生构造函数模式
(7) 安全构造函数模式
看完上面的js面试,如果你还不懂基础知识,可以点击下面的链接开始学习~