网站大量收购独家精品文档,联系QQ:2885784924

JavaScript面经整理学习5.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

JavaScript⾯经

●⼀次JS请求涉及的缓存处理。

○浏览器缓存。静态资源(包括JS)。

○代理服务器缓存。

○CDN缓存。

○DNS缓存。

●闭包

○闭包函数。声明在函数中的函数。

○闭包。⼀种现象。内部函数可以访问外部函数中的变量。即使该外部函数被返回。

■优点。封装+缓存。⽅便设计私有属性和⽅法,可以访问外部变量。局部变量可以常驻内

存,缓存。

■缺点。消耗内存。容易造成内存泄漏。局部变量常驻内存,不会被垃圾回收。

●解决⽅法。退出函数前,将不使⽤的变量删除。

■闭包找的是同⼀地址中⽗级函数中对应变量的最终值。

●每次外部函数执⾏时,创建⼀个新的内存空间,地址不⼀样。

●作⽤域链

○作⽤域是变量和函数的可访问范围。控制着函数和变量的可⻅性+⽣命周期。

○作⽤域的变量只能向上访问,⼀直到window,不能向下。

■全局作⽤域+函数作⽤域。

■代码编译期间,确定作⽤域规则(当前+嵌套作⽤域中变量如何查找)。

■变量对象创建期间的之⼀⼯作确定作⽤域链。

●作⽤域链当前变量对象+上层变量对象(直到全局对象)。

●执⾏上下⽂。当前代码的执⾏环境,会形成作⽤域。

○执⾏环境。全局+函数+eval。调⽤栈,栈底是全局。

■return会直接出栈当前上下⽂。浏览器关闭,则全局执⾏上下⽂出栈。

○单线程,同步执⾏。

○⽣命周期

■创建。调⽤函数时,创建函数执⾏上下⽂。创建变量对象+建⽴作⽤域链+this绑定。

■执⾏。变量赋值,执⾏代码。

○变量对象。执⾏上下⽂相关的数据作⽤域,存储上下⽂中定义的变量和函数声明。

1

■活动对象是执⾏期间对应的类型,变量对象是创建⽣命周期的。VO转为AO。

■⽣命周期创建+执⾏+销毁。

■变量对象创建过程。

●创建arguments对象,存储调⽤时传⼊的实参。

●上下⽂中的函数声明。以上下⽂中的function声明建⽴函数名和内存地址的键值对。

●上下⽂中的变量声明。每发现⼀个变量声明,以变量名建⽴键值对,值为undefined。

若同名属性已经存在,则跳过,防⽌修改为undefined。

■活动对象执⾏阶段。

●执⾏赋值等其他代码。(将声明全部去掉,若是同名的变量赋值,则更新为值)

■声明问题

●同名函数,覆盖前⾯的声明。

●同名变量,忽略后⾯的变量声明。

●同名函数和变量,函数声明提前优先,变量的声明提前被忽略。但之后的执⾏,变量

赋值覆盖。

●原型

○构造函数声明时,创建原型对象,同时原型对象会有⼀个constructor属性,指向其构造函数。

○原型链。对象的__proto__属性连接。如person.__proto__-Ptotype.__proto__-

Ototype-Ototype.__proto__-null。

■构造函数的prototype属性指向其原型。

■构造函数也是对象,Person.__proto__Ftotype

■⽽FtotypeFunction.__proto__。

■ES6的Reflect.getprototypeof

○原型污染。⽐如重写totype.tostring。

■执⾏遇到constructor或__proto__停⽌。

■Object.create(null)创建原型为null的对象,不影响原型链。

■Object.freeze(obj)冻结obj,不可修改属性,⽆法

您可能关注的文档

文档评论(0)

passer + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档