zoukankan      html  css  js  c++  java
  • JS高级程序设计 第七章 函数表达式

    1.闭包是指有权访问另一个函数作用域中的变量的函数。
    2.当某个函数第一次被调用时,汇创建一个指向环境及相应的作用域链,并把作用域链赋值给一个特殊的内部属性。然后,使用this,grguements和其他命名参数的值来初始化函数的活动对象。但在作用域链中,外部函数的活动对于对象始终处于第二位。外部函数的外部函数处于第三位。直至作用域链的重点的全局执行环境。
    3.作用域链的配置机制引出了一个值得注意的副作用,即闭包只能取得包含函数中任何变量的最后一个值。
    4.this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用时。this等于那个对象。
    5.由于JS中没有会计作用域,所以意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的。
    6.所有对象属性都是共有的。任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量。私有变量包括函数的参数,局部变量和函数内部定义的其他函数。
    7.我们把有权访问私有变量和私有函数的公有方法称为特权方法。有两种在对象上创建特权方法的方式。
    8.一种是在构造函数中定义特权方法。这个模式在构造函数内部定义了私有变量和函数。然后,又继续创建了能够访问这些私有成员的特权方法。额能够在构造函数中定义特权方法,是因为特权方法作为闭包有权访问访问在构造函数中定义的所有变量和函数。
    9.通过在私有作用域中定义私有变量或函数,同样也可以创建特权方法。这个模式创建了一个私有作用域,并在其中封装了一个构造函数及相应的方法。在私有作用域中,首先定义了私有变量和私有函数,然后又定义了构造函数及其共有方法。共有方法是在原型上定义的,这一点体现了典型的原型模式。
    10.模块模式则是为单列创建私有变量和特权方法。所谓单例制度就是只有一个实例的对象。
    11.JS中的函数表达式和闭包都是及其有用的特性,利用它们可以实现很多功能。不过因为创建闭包必须维护二外的作用域,所以过度使用他们可能会占用大量内存。

  • 相关阅读:
    XML(学习笔记)
    css样式学习笔记
    Request(对象)
    sql一些错误修改的总结
    转载(如何学习C#)
    sql server(学习笔记2 W3Cschool)
    sql sqrver(学习笔记1 W3Cschool)
    关于 flutter开发碰到的各种问题,有的已经解决有的一直没解决或者用其他方法替代
    关于 Flutter IOS build It appears that your application still contains the default signing identifier.
    关于 flutter本地化问题 The getter 'pasteButtonLabel' was called on null
  • 原文地址:https://www.cnblogs.com/srtain/p/6511471.html
Copyright © 2011-2022 走看看