博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
『ExtJS』01 004. ExtJS 4 确定函数的作用域
阅读量:6390 次
发布时间:2019-06-23

本文共 2287 字,大约阅读时间需要 7 分钟。

  hot3.png

保证你执行的函数在正确的作用域内对于现在的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关键字好神奇!

转载于:https://my.oschina.net/skyler/blog/706105

你可能感兴趣的文章
iPhone 用USB连接SSH的时候一直报错
查看>>
关于Vuex的action传入多个参数的问题
查看>>
放弃jQuery, 使用原生js
查看>>
跨越适配&性能那道坎,企鹅电竞Android weex优化
查看>>
一文读懂鼠标滚轮事件(wheelEvent)
查看>>
腾讯云国内节点centos7.2安装k8sv1.12.3
查看>>
Python爬虫--- 1.5 爬虫实践: 获取百度贴吧内容
查看>>
解决Shell脚本$'\r': command not found问题
查看>>
ionic3使用百度地图
查看>>
JavaWEB开发11——JSP
查看>>
轻松搞定javascript中this的指向
查看>>
每天一个设计模式之单例模式
查看>>
Image Load Error Handler
查看>>
Vue2.5笔记:Vue中的模版
查看>>
策略路由基础命令(Linux)分享
查看>>
linux下磁盘挂载与查看
查看>>
javascript 闭包
查看>>
如何减少浏览器repaint和reflow(上)
查看>>
Exchange 2010之收件人对象管理
查看>>
Yarn详解
查看>>