作用域、上下文、闭包、原型、继承

作用域、上下文、闭包、原型、继承

什么是作用域?

      (1)在JavaScript里,域指的是代码当前的上下文语境

      (2)javascript中作用域分为:全局作用域和本地作用域


本地作用域:

      (1)整个页面,全局域只能有一个

      (2)全局域有一个内置对象,window

      (3)所有全局域的变量和方法都绑定到window对象上

本地作用域(函数作用域):

      (1)本地域是指那些在全局域中定义的域

      (2)本地域通常指的是函数作用域,在函数内部定义的变量和函数

      (3)本地域的函数和变量无法在这个域的外部被访问

注意:
块级作用域:一般编程语言中以大括号{}为一个块进行分离,每一个{}为一个块作用域
Javascripe中不存在块级作用域之说


什么是上下文?

想要了解什么是上下文,就先要了解函数的执行过程。函数的执行过程分为两个阶段:预处理阶段和执行阶段。

      预处理阶段:

          (1)全局词法环境(lexical environme)也就是执行上下文环境;

          (2)用于存储预处理数据;

          (3)预处理数据包括:var方式定义的变量和声明方式定义的函数;

          (4)var方式定义的变量直接赋值undefine,声明方式定义函数赋值整个函数体,this赋值

      预处理覆盖问题解析(函数以声明方式进行定义)

          (1)如果后声明的函数名和之前声明的函数名冲突,冲突函数后面的会覆盖前面的

          (2)如果后声明的函数名和定义的属性名冲突,冲突函数后面的会覆盖前面的

          (3)如果后定义的属性名和之前声明的函数名冲突,则会忽略属性定义


      执行阶段:

          (1)从js代码块的第一行开始执行,并给词法环境中的变量赋值

          (2)如果变量在词法环境中不存在,则往词法环境中加入变量并赋值

      执行阶段覆盖问题

          (1)执行阶段不会再处理声明方式定义的函数

          (2)声明方式定义函数不会覆盖任何定义的函数和属性

          (3)后赋值的属性会覆盖先赋值属性内容


什么是闭包:

      闭包就是指外部能够随意读取其他函数内部变量的函数

      也可以理解成“定义在一个函数内部的函数”

      闭包是将函数内部和函数外部连接起来的桥梁


闭包的作用:

      (1)可以读取函数内部的变量,减少全局变量定义

      (2)减少函数传递参数的数量

      (3) 让函数内部变量的值始终保持在内存中,不会在函数调用完毕后被自动清除


闭包使用注意事项:

      (1)闭包使用父函数变量时候,只是个引用,而不是复制

      (2)父函数每调用一次,会产生不同的闭包

      (3)闭包中循环的问题

      (4)闭包的自执行格式写法


自执行函数(立即执行函数):

原理:括弧()和JS的&&,异或,逗号等操作符能在函数表达式和函数声明上消除歧义

格式:(1)调用函数,得到返回值。强制运算符使函数调用执行

           (2)调用函数,得到返回值。强制函数直接执行再返回一个引用,引用再去强制执行

           (3)通过一些操作符,来把声明强制转化为表达式,并执行

                 


什么是原型:

原型是指prototype:JS中所有的静态属性全部定义在当前构造函数的原型(prototype)中

prototype原型:

      (1)任何函数都是对象

      (2)任何函数都会有个默认自带属性:prototype,称之为原型

      (3)prototype指向的是一个对象,对象称之为原型对象

      (4)原型对象内部封装了唯一一个默认属性constructor,称之为原型构造器

      (5)原型构造器指向的是当前函数本身


关于prototype原型要讲的东西比较多,在这里就不深入研究了。


继承:

定义:一个类中直接拥有另外一个类中的属性和方法的过程

注意:JS中的继承不伦不类,大不要以高级面向对象语言的思维来思考JS继承

           JS中的继承方式多种,具体分类如下:

           (1)对象继承:深度拷贝完成继承

           (2)类的继承:call/apply方式、原型链方式、混合模式、桥接混合模式


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值