前端知识总结之JavaScript篇

栏目: JavaScript · 发布时间: 4年前

  • 普通函数中的this指向全局window
  • 构造函数中的this指向实例对象
  • 对象方法中调用this,this指向该方法的对象
  • 当函数用call,apply或者bind调用时,this指向传入的对象
  • 箭头函数中没有this,this指向外部作用域中的this
  • 通过事件绑定方法时,this指向事件源

New关键字的运行机制

  • 创建一个新的空对象
  • 将构造函数的this指向该空对象的方法
  • 将该空对象原型指向构造函数原型
  • 返回新对象

作用域/预解析/作用域链

  • 作用域:变量和函数可访问的一个范围,分为全局变量,全局作用域.局部变量,局部作用域
  • JS代码读取时,首先进行预解析,寻找作用域中的变量和函数,然后对其进行提前声明,代码从上往下执行,函数内的变量么有var声明就是全局变量
  • 作用域链:执行函数时,先从函数内部寻找局部变量,如果没找到,就会向声明函数的作用域依次向上寻找

Array数组的相关方法:

  • push:数组末尾添加
  • pop:数组末尾删除
  • unshift:数组开头添加
  • shift:数组开头删除
  • sort:数组排序
  • join:数组拼接成字符串
  • splice:删除数组中第几项
  • indexOf:数组中查找第一次出现的位置,未找到时返回-1
  • lastIndexOf:数组中从末尾往前查找第一次出现的位置,未找到时返回-1

String字符串的相关方法:

  • charAt():通过索引找到对应的字符,不传参数时默认为0,取值范围0-字符串的length-1,如果超出范围,返回一个空空字符串
  • charCodeAt():通过索引找到对应字符的Unicode编码,不传参默认为0,取值范围0-字符串length-1,如果超出范围,返回一个NaN
  • indexOf():通过字符去找对应的索引,找到字符首次出现的位置(从左往右),未找到时返回-1
  • lastIndexOf():跟indexOf作用一样,顺序是从右向左查找,找不到时返回-1
  • slice():截取字符串,不包含结束位置的字符,起始位置不能大于结束位置,否则返回一个空字符串,不传参时返回整个字符串,返回值为截取后的字符串.原字符串不变
  • split():把字符串按分隔符分割成数组
  • substring():截取字符串,参数必须为正数,起始位置可以大于结束位置,会自动把两个位置调换
  • substr(start,length): 截取指定起始位置和长度的字符串
  • toLowerCase():把字符串转成小写
  • toUpperCase():把字符串转成全大写
  • trim(): 去掉字符串前后的所有空格

闭包/闭包的优缺点

  • 当函数执行时,会形成一个私有作用域,会保护里面的私有变量不受外界的干扰

  • 优点:

    • 避免全局变量污染
    • 可以长久的在内存中保存一个私有变量(不被垃圾回收机制回收)
    • 安全性提高,使变量私有化(不会被随意修改)
  • 缺点:

    • 过多的使用闭包,可能导致内存泄漏

面向对象和面向过程

  • 面向过程:指的是在开发过程中专注于每个功能的具体实现方式
  • 面向对象:指的是在开发过程中,分析大体步骤,找到每个步骤可以辅助我们开发的对象(工具)进行操作

面向对象的三个特征

  • 封装-->根据功能性,将多个用于相同操作的功能封装到一个对象中(例如内置的Math)
  • 继承-->让功能更好的复用
  • 多态-->让功能使用的灵活性增强

对象的创建方式

  • 对象字面量{}
  • 构造函数创建方式new Object()
  • 自定义构造函数

prototype属性

  • 函数自带的属性--原型

  • 作用:用于保存构造函数中公用方法值

  • 使用方式: 将构造函数中的方法设置给prototype即可,所有通过当前构造函数创建的对象都可以使用prototype中的方法

  • 三者关系

    • 实例对象:都具有__proto__,就是原型对象
    • 原型对象:都具有constructor属性,就是构造函数
    • 构造函数:都具有prototype属性,就是原型对象

call/apply/bind不同点

  • 共同点:

    • call和apply都可以调用函数
    • call和apply的参数1都可以设置本次调用中this的值
  • 区别:

    • 实参传入方式不同: call是才参数1后,设置多个参数作为实参 apply是才参数2设置数组,数组中的每个元素为实参
  • bind设置的所有参数均为永久设置,无法修改(call,apply都不行)

    • bind方法的参数1,用于设置某个函数内的this
    • bind方法的后续参数,用于设置实参
    • bind方法的返回值为当前函数

递归

  • 在函数中调用自身的形式,称为递归函数

  • 可能出现的问题: 用多了可能出现死循环的情况

    • 解决方式: 给递归限制执行次数,根据规律设置递归的结束条件

正则表达式

  • 匹配,替换,提供功能

  • 正则匹配方式:test()参数为要匹配的字符串,返回值true表示匹配成功(字符串满足正则的规则)false表示是匹配失败

  • 正则替换操作:replace()参数1为要替换的内容,参数2为替换的目标值

  • 正则提取操作:

    • 字符串方法match()参数为正则表达式,返回值为数组形式,包含提取的内容
    • 正则方法exec()参数为要提取内容的字符串,返回值为数组,特性:通过同一个正则对字符串进行多次提取操作,内容会进行累计

BOM

  • window中的常用属性

    • window.document 也是DOM的顶级对象,用于操作浏览器中的页面功能
    • window.console 用于操作浏览器中的控制台功能
    • window.location 用于操作浏览器中的地址栏相关功能
    • window.history 用于操作浏览器中的历史记录相关功能
    • window.navigator 用于操作浏览器与系统的一些相关信息
  • window中的常用方法

    • window.alert(); -- 弹出提示框
    • window.confirm() ; ---弹出确认提示框
    • window.prompt(); -- 弹出一个提示框,允许用户输入内容
    • window.open(); 用于开启新窗口
    • window.close(); 用于关闭指定窗口
  • location对象 (地址栏相关功能)

    • location.href=''; 让页面跳转
    • location.reload(); 让页面刷新
    • window.location.hash ; 哈希值#后面
    • window.location.host; 服务器名+端口号
    • window.location.hostname; 服务器名
    • window.location.port; 端口
    • window.location.pathname; 路径名
    • window.location.protocol; 协议
    • window.location.search; 参数

DOM

  • 事件三个阶段

    • 事件冒泡
    • 事件委托
    • 事件捕获
  • 阻止事件冒泡

    • stopPropagation()
    • e.cancelBubble = true //兼容IE
  • 阻止默认事件

    • preventDefault() 取消默认事件
    • return false //推荐使用
  • 事件捕获

    • addEventListener() // IE9以下不支持
前端知识总结之JavaScript篇

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python编程快速上手

Python编程快速上手

Albert Sweigart / 王海鹏 / 人民邮电出版社 / 2016-7-1 / 69.00元

如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不......一起来看看 《Python编程快速上手》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具