Javascript进阶(一)

一. 理解JS的面向对象,理解new,new之后都做了什么

对于new()来说,就是为原生对象创造一个实列,让我们可以在外部去访问原型内部的属性和方法。

new操作符调用构造函数后会经历四个步骤:

  • 创建一个新对象
  • 将构造函数的作用域赋给新对象(this就指向了新对象)
  • 执行构造函数中的代码(为这个新对象添加属性)
  • 返回新对象

有道云笔记 面向对象的理解

二. JavaScript作用域,自由变量

全局作用域和函数作用域,ES6新增块级作用域

全局作用域

最外层函数定义的变量,任何内部函数都可以访问

局部作用域(函数作用域)

函数内部变量,有局部作用域,必须使用var操作符,否则为全局变量,且外部函数无法访问内部变量

块级作用域

任何一对花括号( {和} )中的语句集都属于一个块,块内定义的变量在外部无法访问

作用域链

子对象会一级一级的向上寻找所有父对象的变量,所以,父元素的所有变量,对子对象都可见,反之,则不成立

三. JS的内存泄漏与垃圾回收机制(GC)

内存泄漏

程序运行需要内存,对持续执行的程序,要及时释放不必要的内存,否则内存占用越来越高,轻则影响系统性能,重则会导致进程崩溃,一块被分配的内存既不能使用,也不能被回收,直至浏览器进程结束,就会造成内存泄漏

  • 意外的全局变量(可以用‘use strict’严格模式防止发生)
    • 在局部作用域内部不用var去声明变量的话,该变量会被视为全局(window)对象,当调用完函数后,该变量还存在,就会导致泄漏
    • this,无对象传入函数中,会使this指向window对象

根据定义,这些未知的变量是无法被回收的(除非被指定为空或重新分配),若使用全局变量来存储大量数据,确保其指定为空或完成后重新赋值

  • 被遗忘的定时器或回调

    • 在某一时间点对象会被删除,内部处理程序的一整块代码不再需要,但定时器未被清除,还在活动,处理程序无法被收集

    • 对观察器来说,当变量不需要时,显示删除或无法访问的关联对象

    • 一些框架和库有自己的API,自动删除不使用的内存防止内存泄漏

  • 没有清理的DOM元素

  • 闭包

垃圾回收机制
跟踪内存的分配和使用

参考网址 JS内存泄漏教程 JS内存管理机制

四. 执行上下文环境,以及执行上文栈

** 五. 闭包(闭包原理,底层解析,存在的问题)**

闭包指的是可以访问另一函数作用域中变量的函数,创建一个闭包,就是在一个函数中嵌套另一个函数,变量被引用着所以不会被回收,会造成内存泄漏

两个作用:

  • 外部函数可访问内部变量
  • 变量的值始终保存在内存中

六. this,如何改变this的指向(bind,call,apply)

4.原型,原型链(原型链图)
9.JS继承的6种方式,创建对象的7种方式
7.instance of与type of
8.浏览器渲染过程(内核,内部结构,如何解析html、css、js)
11.写动画的方式及对比(JS动画与CSS动画的优缺点[调用GPU加速渲染])
12.函数防抖和函数节流
13.JS异步编程的方法和原理,进程和线程的区别。JS是单线程的,为何能让ajax异步
14.JS常用设计模式(MVC、MVP、MVVM及其他设计模式)
15.前后台分离的意义(开发演变方式)
16.web性能优化(浏览器渲染机制,重绘重排,如何减少重绘重排,如何看到重绘重排的时间)
17.跨域原理(同源策略,跨域的产生)
18.如何遍历一个对象
19.数组去重
20.HTTP(HTTP是什么,HTTP1.0和HTTP1.1的区别,请求体响应体、请求头响应头),HTTPS,HTTP2.0
21.深复制和浅复制,如何实现深复制和浅复制
22.自定义事件(eventemitter3方案和发布订阅模式)
23.cookie,session,sessionstorgae,localstorage的区别,封装一个读写cookie的工具库(用面向对象的方法,new出来使用)。服务器和浏览器分别如何设置cookie,cookie的有效期
24.分析URL的组成部分,各个部分的功能,浏览器有location对象,其中有host,hash,hostname、path等,如何用JS字符串方法提取,如何把querystring转换成对象
25.浏览器缓存、HTTP缓存(强缓存、协商缓存),浏览器缓存和CDN的关系
26.模板引擎的工作原理
27.rem方案
28.Web安全:XSS/CSRF

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值