面试题复习第二天 js 篇

73 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情 

1.请你谈谈 Cookie 的优缺点

优点:极高的扩展性和可用性
1) 数据持久性。
2) 不需要任何服务器资源。 Cookie 存储在客户端并在发送后由服务器读取。
3) 可配置到期规则。 控制 cookie 的生命期,使之不会永远有效。偷盗者很可
能拿到一个过期的 cookie 。
4) 简单性。 基于文本的轻量结构。
5) 通过良好的编程,控制保存在 cookie 中的 session 对象的大小。
6) 通过加密和安全传输技术( SSL ),减少 cookie 被破解的可能性。
7) 只在 cookie 中存放不敏感数据,即使被盗也不会有重大损失。
缺点:
1) Cookie 数量和长度的限制 。
数量:每个域的 cookie 总数有限。
a) IE6 或更低版本最多 20 个 cookie
b) IE7 和之后的版本最后可以有 50 个 cookie
c) Firefox 最多 50 个 cookie
d) chrome 和 Safari 没有做硬性限制
长度:每个 cookie 长度不超过 4KB ( 4096B ),否则会被截掉。
2) 潜在的安全风险 。 Cookie 可能被拦截、篡改。如果 cookie 被拦截,就有
可能取得所有的 session 信息。
3) 用户配置为禁用 。有些用户禁用了浏览器或客户端设备接受 cookie 的能
力,因此限制了这一功能。
4) 有些状态不可能保存在客户端 。例如,为了防止重复提交表单,我们需要在
服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到
任何作用。

2.Array.prototype.slice.call(arr,2)方法的作用是:

利用 Array 原型上的 slice 方法,使用 call 函数的第一个参数,
让这个方法中的 this 指向 arr,并传递参数 2,实际上等于 arr.slice(2),即从下标为 2 开始截取到末尾。

3、简单说一下浏览器本地存储是怎样的

总的来说,浏览器存储分为以下几种:
1Cookie 存储,明文,大小限制 4k 等
2localStorage,持久化存储方式之一,不用在两端之间传输,且限制大小为10M
3、sessionStorage,会话级存储方式,浏览器关闭立即数据丢失
4、indexDb,浏览器端的数据库

4.原型 / 构造函数 / 实例

原型(prototype): 一个简单的对象,用于实现对象的 属性继承。可以简单的理
解成对象的爹。在 Firefox 和 Chrome 中,每个 JavaScript 对象中都包含一个
__proto__ (非标准)的属性指向它爹(该对象的原型),可 obj.__proto__进行访问。
构造函数: 可以通过 new 来 新建一个对象 的函数。

实例: 通过构造函数和 new 创建出来的对象,便是实例。 实例通过
__proto__指向原型,通过 constructor 指向构造函数。
说了一大堆,大家可能有点懵逼,这里来举个栗子,以 Object 为例,我们常用
的 Object 便是一个构造函数,因此我们可以通过它构建实例。

// 实例 const instance = new Object()复制代码
则此时, 实例为 instance, 构造函数为 Object,我们知道,构造函数拥有一个
prototype 的属性指向原型,因此原型为:
// 原型 const prototype = Object.prototype
这里我们可以来看出三者的关系:
实例.__proto__ === 原型
原型.constructor === 构造函数
构造函数.prototype === 原型
// 这条线其实是是基于原型进行获取的,可以理解成一条基于原型的映射线//
例如: // const o = new Object()// o.constructor === Object --> true//
o.
__
proto__ = null;// o.constructor === Object --> false// 注意: 其
实实例上并不是真正有 constructor 这个指针,它其实是从原型链上获取的//
instance.hasOwnProperty('constructor') === false (感谢 刘博海 Brian
童鞋
实例.constructor === 构造函数

image.png