zoukankan      html  css  js  c++  java
  • 闭包

    前言
    闭包:指函数变量被隐藏在作用域链之内,这时看起来像是函数将变量“包裹”起来了(函数对象通过作用域相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性在计算机文献中成为闭包)。闭包是一个可以重用的对象,又保护对象不被篡改的一种机制。
    作用域和作用域链
    作用域:作用域是一个变量的可用范围,其实质是一个保存变量的对象,使用作用域可以避免不同范围的变量相互干扰。
    全局作用域:在 JavaScript 中的全局作用域就是 windows。优点是可以重复使用,随处可用,但会造成全局污染(全局污染指在两个脚本中存在同名的变量,当这两个脚本在同一个窗口中运行时,由同名变量造成的混乱。)
    函数作用域:临时创建的活动对象 AO(activation object),该对象包含了函数的所有局部变量、命名参数、参数集合以及 this,当运行上下文被销毁时活动也会被销毁(闭包形成的原因就是因为活动对象被引用着无法销毁而导致的)。优点是不污染全局,但不可重复使用且仅在函数内才可以使用。
    程序执行的原理

  • 相关阅读:
    slots属性(省内存,限制属性的定义)
    自定制格式化方式format
    改变对象的字符串显示__str__repr
    __getattribute__和item系列
    授权(类似)
    双下划线开头的attr方法
    动态导入模块
    反射
    python的单下划线和双下划线
    在子类中调用父类的方法
  • 原文地址:https://www.cnblogs.com/aioverg/p/11400623.html
Copyright © 2011-2022 走看看