重操JS旧业第五弹:函数
函数在任何编程语言中起着非常重要的位置,因为他是功能的最小单元,在js中函数是一种类型 Function
1 申明与定义
显示声明:function cc(){};函数名其实是函数的一个指针,函数名某种意义上也就是function类型的一个变量,对于显示什么的函数,不管函数在文档什么位置都糊被js引擎预先加载到编译环境栈中;
也就是申明自动提前
函数表达式:var fun=function(){};对于表达式函数,起本质上变量指向了一个函数,但是呢,这个函数申明不会被提前加载到js引擎中提前编译
2 函数成员
this:this在js中是一个灵活多变的玩意儿,它指向的函数运行域对象,说起这个域对象其实是个比较难理解的东西;要理解this指向谁,只需明白谁调用了该函数,this就指向谁
argument:该对象存储了函数的所有形式参数,argument.callee该函数指向了函数本身,这个属性往往用于函数递归调用;
function sum(m){
if(m>0){
return m+argument.callee(m-1);
}
else{
return 1;
}
}
prototype:函数的原型对象,是函数的一个非常非常重要的成员
3 函数属性和方法
length:函数参数的个数
call:调用方式,var fun=sum;fun.call(this,*,*),这里第一个参数均为上下文this对象,在这里可以改变this的指向,对于函数的形式参数这里要求一一列举出来
apply:与call不同的是形式参数不用一一列举出来,如 func.apply(this,func.argument)
bind:bind与call和apply不同的是bind将函数又变成一个变量,且可以改变函数的this,如sum.bind(o);
4 函数的特性
函数不具有重载性
函数可以作为变量:作为函数的返回值,函数的形式参数;
js中函数作为面向对象程序设计具有非常重要的基础,而函数也是最为复杂的类型之一,其中函数嵌套,闭包,面向对象,继承,多态等待等。
重操JS旧业第五弹:函数的更多相关文章
- 重操JS旧业第十弹:闭包
闭包是js最难理解,也是最蛋疼的一个名词,仿佛只可意会不可言传一样,有人说闭包说白了就是函数嵌套,也有人说闭包就是函数能够访问函数外部的变量,而内部的外部访问不了: 貌似都非常有道理,其实仔细想来只不 ...
- 重操JS旧业第八弹:面向对象与继承
js里面没有语言语法层面的继承机制,但这并不意味着js就不能实现继承,利用js属性和方法动态性来模拟实现继承,通过总结大概有如下方法实现: 1 原型链继承 我们知道原型在对象中扮演着重要的角色,函数本 ...
- 重操JS旧业第七弹:面向对象与对象创建
JS是一种完全面向对象的程序设计语言,在面向对象处理方面,具有多种多样的实现方式,加之对象成员的动态性使得这门语言更加灵活:而js对象成员动态性也是创建和扩展对象的有力方式. 1 对象成员动态性 属性 ...
- 重操JS旧业第四弹:Date与Global对象
1 Date原理 Date类型表示时间,js中采用UTC国际协调时间,以1971年1月1日0分0秒0微秒开始,经过的毫秒数来表示时间,比如一年的时间计算 1分:1000*60: 1小时:1000(毫秒 ...
- 重操JS旧业第三弹:Array
数组在任何编程语言中都是非常重要的,因为函数在最大程度上代表了要实现的功能,而数组则是这些函数所要操作的内存一部分. 1 构建数组 js与其他非脚本语言的灵活之处在于要实现一个目标它可能具有多种方式, ...
- 重操JS旧业第十一弹:BOM对象
BOM对象即浏览器内置对象,现今流行的浏览器内核有Safri,Firefox,Chrome,Opera,IE其中IE的兼容性是最蛋疼的在10及其过后还好点,但是现在IE基本上淘汰,而国内像360这种垃 ...
- 重操JS旧业第六弹:基本类型包装
在前面已经知道js中的类型有boolean,string,number,undefined,function,object,其中boolean,number,string为值类型.所谓的基本类型包装, ...
- 重操JS旧业第九弹:函数表达式
函数表达式,什么概念,表达式中的函数表达式. 1 函数申明 function 函数名([函数参数]){ //函数体 } js中无论像这样的显示函数什么放在调用之前还是调用之后,都不影响使用,因为js解 ...
- 重操JS旧业第二弹:数据类型与类型转换
一 数据类型 1 js中的数据类型 1.1 数据类型列举 1)number类型 2)boolean类型 3)string类型 4)对象类型 5)函数类型 6)undefined类型 1.2 数据类型获 ...
随机推荐
- 数据结构——队列(Queues)
队列的存储特性:FIFO(first in first out)即先进先出原则 单向/双向队列 *优先队列(与queue不同) 存储方式: 带尾指针的单向链表 / 数组 queue类: queue() ...
- linux 命令之sar——监视系统状态
摘要:在进行系统或者内核测试的时候,我们经常需要观察cpu利用率,缓冲区使用情况,文件读写情况等等.在linux系统下,我们可以用sar命令来达到这个要求. sar 命令行的常用格式: sar [op ...
- 关于方法中的形参out
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java Project部署到Tomcat服务器上
所有的JAVA程序员,在编写WEB程序时,一般都通过工具如 MyEclipse,编写一个WEB Project,通过工具让这个WEB程序和Tomcat关联.其实在我们可以通过JAVA程序部署到Tomc ...
- BZOJ 1036: [ZJOI2008]树的统计Count( 树链剖分 )
树链剖分... 不知道为什么跑这么慢 = = 调了一节课啊跪.. ------------------------------------------------------------------- ...
- IPython在Windows 7上的搭建步骤
安装篇 pip install jupyter 使用篇 启动本地notebook,打开Windows命令行,键入:ipython notebook
- 基于visual Studio2013解决C语言竞赛题之0513字符拷贝
题目 解决代码及点评 /************************************************************************/ /* 13. 将字符数 ...
- .yml是什么文件
YAML(IPA: /ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达资料序列的编程语言.YAML参考了其他多种语言,包括:XML.C语言.Python.Perl以及电子邮件格式RFC ...
- css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题
近期在负责一个微信H5 App项目,遇到一个郁闷的问题,手机浏览器查看网页时图标都是模糊的,有锯齿,电脑浏览器显示则是正常.大概知道是分辨率适配等类型的问题,后来网上查找了一些办法.大部分的解决方式都 ...
- 推断js中的类型:typeof / instanceof / constructor / prototype
怎样推断js中的类型呢,先举几个样例: var a = "jason"; var b = 123; var c = true; var d = [1,2,3]; var e = n ...