zoukankan      html  css  js  c++  java
  • 『ExtJS』01 004. ExtJS 4 确定函数的作用域

    保证你执行的函数在正确的作用域内对于现在的JavaScript程序员是一个艰难的任务。

    我们将在本文学习一个关于JavaScript函数作用作用域的规则,以便理解如何去确定函数的作用作用域。

    JavaScript 概念


    • 作用域(Scope)关系到上下文中代码的执行以及决定变量是否可用;
    • JavaScript有两种作用域:全局、局部;
      • 全局作用域的函数与变量可以被到处使用;例如:document 与 window 变量;
      • 局部作用域的函数与变量的作用域在所处定义它的函数的内部,因此,局部变量不能被定义它的函数的外部访问(但是可以被其内部的函数访问)。

    JavaScript 代码


    Language:JavaScript

    IDE:Eclipse Java EE

       1: //-------全局变量------------------------------------
       2: var myVar = 'Hello from Global Scope!';
       3: alert(myVar); // alerts 'Hello from Global Scope!'
       4:  
       5: function myFunction() {
       6:     myVar = 'Hello from MyFunction!'; // 使用全局myVar
       7: }
       8:  
       9: alert(myVar); // alerts 'Hello from Global Scope!"
      10: myFunction(); // alerts 'Hello from MyFunction!'
      11: alert(myVar); // alerts 'Hello from Global Scope!'
      12:  
      13: // -------局部变量------------------------------------
      14: var myVar = 'Hello from Global Scope!';
      15: alert(myVar); // alerts 'Hello from Global Scope!'
      16:  
      17: function myFunction() {
      18:     var myVar = 'Hello from MyFunction!'; // 定义局部变量
      19:     alert(myVar);
      20: }
      21:  
      22: alert(myVar); // alerts 'Hello from Global Scope!"
      23: myFunction(); // alerts 'Hello from MyFunction!'
      24: alert(myVar); // alerts 'Hello from Global Scope!'
      25:  
      26: // -------this关键字代表当前代码所处的范围----------------------
      27: function MyClass() {
      28:     console.log(this);
      29:     this.myProperty = 'Hello';
      30: }
      31:  
      32: var myClass = new MyClass();
      33: alert(myClass.myProperty); // alerts 'Hello'
      34: alert(this.myProperty); // alerts 'undefined'
      35: // this.myProperty代表MyClass外部一层的myProperty变量

    ExtJS 4 概念


    • 当我们在处理ExtJS的作用域时,我们一般要确定我们的方法是在正确的类中执行(无论是组件、store、还是控件),例如Ext.button.Button的单击事件将执行在Button类实例作用域内的处理方法;

    ExtJS 4 代码


    Language:Javascript

    Framework:ExtJS 4.0.7

    IDE:Eclipse Java EE

       1: var cat = {
       2:     sound : 'miaow',
       3:     speak : function() {
       4:         alert(this.sound);
       5:     }
       6: };
       7: var dog = {
       8:     sound : 'woof',
       9:     speak : function() {
      10:         alert(this.sound);
      11:     }
      12: };
      13:  
      14: cat.speak(); // alerts 'miaow'
      15: dog.speak(); // alerts 'woof'
      16:  
      17: // -------使用Ext.bind()强行绑定同方法名的方法-----------------
      18: Ext.bind(dog.speak, cat)();

    ExtJS 4 说明


    1. Ext.bind()方法创建一个dog.speak()方法的‘包装’,这将强制dog类去使用cat类的同名方法cat.speak();
    2. 通过使用this关键字,在bind之后的dog.speak()方法中,传入的cat的成员。

    总结


    • this关键字好神奇!





    版权声明:

    作者:莫不逢
    出处:http://www.cnblogs.com/sitemanager/
    Github:https://github.com/congjf

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


  • 相关阅读:
    Vue入门系列(四)之Vue事件处理
    Vue入门系列(五)Vue实例详解与生命周期
    微信为啥不能直接下载.apk安装包
    Oracle行转列SQL
    MyISAM 和InnoDB区别
    jQuery easyui datagrid数据绑定
    js调用百度地图API创建地图,搜索位置
    python tornado框架使用
    python数据库连接池
    python操作数据库
  • 原文地址:https://www.cnblogs.com/sitemanager/p/2785144.html
Copyright © 2011-2022 走看看