当前位置: 首页 > 编程日记 > 正文

Extjs 基础篇—— Function基础

这里主要是JS的基础知识,也是深入理解Ext的基础。
1.参数可变长,注意跟Java还是有一点区别的。
例:

view source
print?
1.function getUser(name,age){
2.alert("name: "+name + " age: "+age);
3.}


调用方法:getUser(); // 可以不传参数
getUser("cat"); // 可以只传递一个参数
getUser("cat",20); // 传两个参数
getUser("cat",20,2,"dog"); // 传两个以上的参数
2.不给函数定义形参,直接在函数中使用arguments属性获取实际传递的参数数组。
例:

view source
print?
1.function getUser(){
2.var args = arguments;
3.alert(args.length);
4.alert(args[0]);
5.}


3.js函数不能重载.因为,JS函数的参数是可变长的,从代码意义上来说就没有重载。另外,JS是一种解释执行的语言,浏览器脚本引擎开始载入JS代码的时候,必须先“扫描”然后才开始解释执行。在这个过程中,有一个重要的操作就是“标识符解析”,要求同一命名空间不允许同名变量的存在,包括函数名。
例:

view source
print?
1.function getUser(){
2.alert("hello!");
3.}
4.function getUser(name){
5.alert("sorry!");
6.}
7.getUser(); // 结果永远是 sorry!


4.命名空间:Java我们用package edu.ouc.wy来定义,JS中则需要我们一层一层的定义。

view source
print?
1.var edu = {};
2.var edu.ouc = {};
3.var edu.ouc.wy = {};


5.JS支持函数嵌套
例:

view source
print?
1.function outerFn(){
2.function innerFn(){
3.alert("innerFn test..");
4.}
5.alert("outerFn test...");
6.}
7.outerFn();  // 结果弹出来两个窗口


6.既然有了函数嵌套,我们就有从outerFn外部调用innerFn函数的需求
例:

view source
print?
1.function outerFn(){
2.function innerFn(){
3.alert("innerFn test..");
4.}
5.return innerFn();
6.}
7.var cacheFn = outerFn();
8.cacheFn();


一般来说,“外层”作用域中的代码是无法访问“内层”作用域的。但是通过return一个函数的方式,可以让函数“穿越”作用域的限制,从而让外层作用域能够“触摸”到“内层”的函数和变量。
例:

view source
print?
01.var outerName = "cat";
02.function outerFn(){
03.var name = "dog";
04.function innerFn(){
05.alert("outername: "+outerName + " innername: "+name);
06.}
07.return innerFn;
08.}
09.var cacheFn = outerFn();
10.cacheFn(); // 结果为 outername: cat innername: dog


7.JS中函数既是数据
例:

view source
print?
1.function testFn(){
2.alert("test function..");
3.}
4.alert(testFn); // 显示的结果和上面这三行是一样的


例:

view source
print?
1.testFn = function(){
2.alert("test function..");
3.}
4.alert(testFn); // 效果和上一个例子是一样的


两者的不同是:前者直接声明了一个函数,在脚本引擎的解析期间,这个函数就会被创建。
而后者相当于是定义了一个变量,因此只有在脚本真正执行到这一行的时候,函数才会被构建出来。
8.函数作为对象的属性,动态的添加和删除
例:

view source
print?
1.var obj = {};
2.obj.testFn = function(){
3.alert("test func..");
4.}
5.obj.testFn(); // 括号()的目的是让testFn这个属性(函数)执行
6.delete obj.testFn;
7.obj.testFn(); // 报错


9.函数也是对象,也有自己的类:Function
例1:

view source
print?
1.var testFn = new Function('name','alert(my func...)');
2.testFn();  // 结果 my func...


Function:可以接受任意多个参数,只有最后一个参数被当做“函数体”。使用new Function()方式创建的函数,是在运行时才创建。并且他的作用域是“顶级作用域”,即window
例:

view source
print?
1.function outerFn(){
2.var name = "cat";
3.var innerFn = new Function("alert(name)");
4.return innerFn;
5.}
6.var cacheFn = outerFn();
7.cacheFn();  // 结果报错,因为在window作用域中,找不到name变量


例2:

view source
print?
1.var myFn = function(){}
2.myFn.name = "cat";
3.alert(myFn.name); // cat
4.delete myFn.name;
5.alert(myFn.name); // 空


10.三种特殊形式的函数调用:call,apply,()
例:

view source
print?
1.function myFn(){
2.alert(this.name);
3.}
4.myFn.call({name:"cat"});  // 结果为cat
5.myFn.apply({name:"dog"});  // 结果为dog


结果很奇怪:两次this.name居然不一样。这就是JS是动态语言的意义所在,不要被Java思想所束缚。对于JS来说,函数中的this并不一定指向特定的对象,它是可变的。(这句很重要)
call和apply都能执行函数并给this传递参数。两者相同点:他们都可以接受两个参数,第一个参数为函数中this需要绑定的对象。不同点:call的第二个参数是可变长参数,apply的第二个参数是数组。
例:

view source
print?
1.function myFn(a,b){
2.return a+b;
3.}
4.myFn.call({},1,2);
5.myFn.apply({},[1,2]);
6.例:(function(){
7.alert("my func..");
8.})();


结果这个函数自己就执行了。
11.我们知道了函数也是对象。也用过了arguments这个原生属性。JS为函数对象提供了很多原生的属性,包括arguments,callee,caller,length,prototype等
例1:

view source
print?
01.function myFn(){
02.var s = "";
03.var len = arguments.length;
04.for(var i=0; i<len; i++){
05.s += arguments[i]; // 注意arguments不是数组,而是对象
06.}
07.alert(s);
08.}
09.myFn(1,2,3,4,5);


例2:

view source
print?
1.function fact(n){ // n的阶乘
2.if(n==1){
3.return 1;
4.}else{
5.return n * arguments.callee(n-1);
6.}
7.}


callee在arguments属性中定义,并且它指向函数自己,可以用于递归调用。
例3:

view source
print?
1.function worker(){
2.alert(worker.caller); // 将会输出boss函数的代码,因为没有给他加(),
3.// 否则将报错too much recursion
4.}
5.function boss(){
6.worker();
7.}
8.boss();
原文链接:http://extjs.org.cn/node/585

相关文章:

Datagridview中数字格式列 不显示小数点前面的0

用代码设置DataGridView中某列为数字格式&#xff0c;但当小数为0.*的时候&#xff0c;前面的0却不显示。只显示.*。 看网上有说&#xff1a; 调整本地设置&#xff0c;控制面板-区域和语言选项&#xff0c;在弹出框的区域选项卡中&#xff0c;选择自定义&#xff0c;在弹出框的…

使用计算机辐射最大,计算机辐射的主要来源及其对人体的危害

计算机已进入现代社会的各行各业和千家万户&#xff0c;它给人们的工作、学习、生活带来了极大的方便。但“计算机病”也与日俱增&#xff0c;严重的影响了人们的身心健康。“计算机病”的症状表现为神经衰弱综合癌、肩颈腕综合症、以及腰背酸疼、抗病能力降低、易感冒等&#…

Android开发权威指南(第2版)新书发布

《Android 开发权威指南(第二版)》是畅销书《Android开发权威指南》的升级版&#xff0c;内容更新超过80%&#xff0c;是一本全面介绍Android应用开发的专著&#xff0c;拥有45 章精彩内容供读者学习。  《Android开发权威指南(第二版)》全面介绍了Android应用开发的各种技术…

北京智能计算产业研究院落户顺义,中科睿芯联手计算所、顺义区打造“产业园2.0”...

作为具有重大发展潜力的高技术产业方向&#xff0c;智能计算在我国方兴未艾。 12月6日&#xff0c;由中科院计算所孵化的智能计算领域创业公司“中科睿芯”牵头发起、联袂中科院计算所和中关村顺义园管委会共同打造的“北京智能计算产业研究院”&#xff08;下简称“研究院”&…

Scratch青少年编程能力等级测试模拟题(四级)

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

react 用html插件,React配置过程中用到的插件汇总

●react插件●react-dom插件●react-router插件●react-redux插件●babel插件●webpack插件●loader插件●jquery插件●moment插件●bootstrap插件●react插件→react(局部安装&#xff1a;cnpm install react --save-dev)→react-dom(局部安装&#xff1a;cnpm install react …

iOS学习之路十三(动态调整UITableViewCell的高度)

大概你第一眼看来&#xff0c;动态调整高度是一件不容易的事情&#xff0c;而且打算解决它的第一个想法往往是不正确的。在这篇文章中我将展示如何使图表单元格的高度能根据里面文本内容来动态改变&#xff0c;同时又不必子类化UITableViewCell。你当然可以通过子类化它来实现&…

近期Freecodecamp问题总结

最近没什么事&#xff0c;刷了freecodecamp的算法题&#xff0c;发现了自己基础的薄弱 1 where are thou 写一个 function&#xff0c;它遍历一个对象数组&#xff08;第一个参数&#xff09;并返回一个包含相匹配的属性-值对&#xff08;第二个参数&#xff09;的所有对象的数…

中国电子学会青少年编程能力等级测试图形化四级编程题:随机选T恤

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

计算机网站编辑需要学什么,网站编辑工作的心得体会

网站编辑工作的心得体会从事网络编辑之前&#xff0c;我对网络编辑这个名词可谓前所未闻&#xff0c;一无所知。从起步时我也认为网络编辑的工作应该是很轻松的&#xff0c;每天就是相同的工作&#xff1a;复制加粘贴&#xff0c;感觉是一个“搬运工”&#xff0c;而后在这十个…

Earth to developers: Grow up!

这是篇老外写的文章&#xff0c;主题是针对网络上的一些宗教式的争论&#xff0c;作者叙述了他自己的一些观点。主要从以下6点做了陈述。为了表达的精确性&#xff0c;就直接用英文。 1. Reject dogmatic thinking about tools, practices, and processes. 2. value flexibilit…

php的匿名函数和闭包函数

php的匿名函数和闭包函数 tags&#xff1a; 匿名函数 闭包函数 php闭包函数 php匿名函数 function use 引言&#xff1a;匿名函数和闭包函数都不是特别高深的知识&#xff0c;但是很多刚入门的朋友却总是很困惑&#xff0c;因为大家习惯上写了函数就是用来调用的&#xff0c;匿…

青少年编程竞赛交流群周报(第042周)

2021年12月19日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第四十二期直播活动。 一、直播内容 我们直播活动的主要内容如下&#xff1a; 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题&#xff08;四级&#xff09;。…

太原理工大学计算机专业多少分录取分数线,多少分能上山西太原理工大学,往年全国各省各专业录取分数线出炉...

太原理工大学简称“太原理工”&#xff0c;位于山西省太原市&#xff0c;国家”世界一流学科建设高校“&#xff0c;国家“211工程”重点建设高校&#xff0c;国家“111计划”地方高校新建基地&#xff0c;教育部首批“卓越工程师教育培养计划”实施高校如果报考太原理工大学&a…

CentOS 7磁盘格式化

查看CentOS 7支持的文件系统格式 [rootcentos-01 ~]# cat /etc/filesystems xfs ext4 ext3 ext2 nodev proc nodev devpts iso9660 vfat hfs hfsplus *mount查看分区的文件系统格式 [rootcentos-01 ~]# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,secl…

Task04:青少年软件编程(Scratch)等级考试模拟卷(一级)

电子学会 软件编程&#xff08;图形化&#xff09;一级训练营 试题来源 青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;一级&#xff09;【2019.09】青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;一级&#xff09;【2019…

oracle 无效索引

错误信息&#xff1a;ORA-01502: index VOX_ID or partition of such index is in unusable state 原因&#xff1a;将表的表空间做了更改&#xff0c;导致索引失效。表移动表空间&#xff0c;需要重建索引。 解决方法&#xff1a;alter index vox_id rebuild 问题查找&#xf…

遂宁专业计算机学校,遂宁计算机专业中职学校哪家强

贵重人才计算机专业2013级学位3950***终一起交款&#xff0c;acccloud已售能力超级强&#xff0c;目前可选的学校有&#xff1a;北京农林科技大学云南省云南农业大学***蒙古族自治州科考学院长春师范大学南宁师范大学甘肃农业大学浙江交通大学南阳师范大学东南大学武汉商学院合…

整理收集49条JQuery代码小结

1. 如何创建嵌套的过滤器 . 代码如下://允许你减少集合中的匹配元素的过滤器&#xff0c; //只剩下那些与给定的选择器匹配的部分。在这种情况下&#xff0c; //查询删除了任何没&#xff08;:not&#xff09;有&#xff08;:has&#xff09; //包含class为“selected”&am…

接口跟抽象类的区别

接口跟抽象类的区别 1.抽象类有构造方法&#xff1b;接口不能有构造方法 2.抽象类中可以有普通成员变量&#xff1b;接口中只能有public static final修饰的全局变量&#xff08;可以默认不写&#xff09; 3.抽象类包含普通方法&#xff0c;静态方法&#xff1b;接口只能有抽象…

Task05:青少年软件编程(Scratch)等级考试模拟卷(一级)

电子学会 软件编程&#xff08;图形化&#xff09;一级训练营 试题来源 青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;一级&#xff09;【2019.09】青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;一级&#xff09;【2019…

国开计算机组成原理,国开计算机组成原理.docx

资料、答案联系喵小记作业网(微信QQ同号786971758)形考一一、单项选择题(每小题6分&#xff0c;共36分)题目1还未回答满分6.00标记题目题干下列数中最小的数是????????。选择一项&#xff1a;A. (1010011)2B. (42)8C. BCDD. (5A)16题目2还未回答满分6.00标记题目题干某…

参加第一届宇宙 JavaScript 大会是怎样的体验

大家好&#xff0c;我是奇舞团&#xff0c;大家可以叫我小舞。第一届全宇宙 JavaScript 开发者大会三天后就要举行了&#xff0c;作为举办方的我简直忙极了。好在场地已经选好了&#xff0c;由我司生产的不写代码只写BUG牌人工智能机器人们已经在帮我布置会场了。本次大会场地定…

使用Pixel Bender Toolkit制作特效——多像素采样(Part 4)

要求 用户级别 初级 必需产品 Flash Player 10Flash Professional CS4 (下载试用版)范例文件 pixel_bender_04.zip (5 KB)其他要求 Pixel Bender Toolkit Pixel Bender Toolkit 2.0 for Macintosh (DMG, 77 MB)Pixel Bender Toolkit 2.0 for Windows (ZIP, 48.8 MB)在本文中&am…

【组队学习】【32期】统计学习方法习题实战

统计学习方法习题实战 航路开辟者&#xff1a;胡锐锋、王维嘉、王瀚翀、王茸茸、毛鹏志领航员&#xff1a;张璇航海士&#xff1a;胡锐锋、王维嘉、王瀚翀、王茸茸、毛鹏志、王天富、范佳慧 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/statistical-le…

量子计算机 漫画,漫画 | 10分钟看懂量子比特、量子计算和量子算法

原标题&#xff1a;漫画 | 10分钟看懂量子比特、量子计算和量子算法请做好准备&#xff0c;即将进入烧脑模式&#xff01;宏观世界的生活经验很多都是表象。比如&#xff0c;你可能认为世界的运行是确定的、可预测的&#xff1b;一个物体不可能同时处于两个相互矛盾的状态。在微…

异步调用WCF的方法需要小心的地方

直接使用下面的代码&#xff0c;由于client对象占用的资源没有被释放&#xff0c;会导致内存泄露GetSimServiceReference.GetSimServiceClient client new GetSimServiceReference.GetSimServiceClient()client.computerSimAsync(DepartmentNo, FileID, F_intput.Length, Read…

中国电子学会青少年编程能力等级测试图形化四级编程题:打篮球

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

#读书笔记 Android-Activity启动模式

什么是Activity的启动模式&#xff1f;当启动一个Activity的时候&#xff0c;系统会创建一个实例&#xff0c;并把它放入到一个任务栈中&#xff0c;至于如何存放&#xff0c;就是由这个启动模式来决定的。Android系统支持多任务&#xff0c;所以系统中会同时存在多个任务&…

计算机专业PhD申请文书范文,美国留学博士申请文书怎么写之范文分享

【导语】对于计划申请美国博士学位的同学&#xff0c;美国博士申请文书的写作尤为重要。美国博士申请文书怎么写呢?本文无忧考网提供了一篇美国土木工程博士申请个人陈述范文&#xff0c;大家可以根据文章理清自己的写作思路。I am planning to pursue graduate studies towar…