javascript 之 函数
注意:函数名仅仅是一个包含指针的变量而已
函数内部属性
arguments 和this 两个特殊对象
arguments:类数组对象,包含出入函数中的所有参数,主要用途是保存函数参数
callee:该属性是一个指针,指向拥有这个arguments对象的函数,在严格模式下运行,会导致错误
例:function factorial(num){
if(num<=1)
return 1;
else
return num*(factorial(num-1))
}
此处用了递归算法,若函数名不变则没有问题,但是函数名变化,那么内部的名字也要变,存在耦合关系,为了消除这种耦合,可以使用callee
function factorial(num){
if(num<=1)
return 1;
else
return num*arguments.callee(num-1)
}
函数的属性和方法:
每个函数都包含该两个属性
length:表示函数希望接收的命名参数的个数
prototype:toString()和valueOf()等方法实际都保存在prototype名下,在创建自定义类型以及实现继承时,该属性都是极为重要的
每个函数都包含两个非继承而来的方法
apply:接收两个参数:一个是运行函数的作用域,另个参数是参数数组 或者 arguments对象
call():基本和apply相同,但是除了this外,传递给函数的参数必须逐个列举出来
例:function sum(num1,num2){ return num1+num2}
function applySum1(num1,num2){ return sum.apply(this , arguments)} 或者arguments替换为[num1,num2]
例:function callSum(this,num1,num2){ return sum.call(this,num1,num2)};
call()和apply()强大的地方是扩充函数赖以运行的作用域
例如 :
window.color=red; var o={ color :blue}
function sayColor(){ alert (this.color)}
sayColor.call(this);//red
sayColor.call(window);//red
sayColor.call(o);//blue
bind()方法:兼容性 ie9+,firefox4,safari5.1.....
var objectSayColor=sayColor.bind(o); objectSayColor();//blue
基本包装类型:Boolean,Number,String
String: 字符串是基本类型值,不应该存在方法,但为了这种直观的操作,后台已经做了处理
例:var s1=' some text '
var s2= s1.substring(2);
可以理解为:(1)创建String类型的实例 (2)在实例上调用指定的方法 (3)销毁这个实例
例:var s1=new String(' some text') var s2=s1.substring(2) s1=null;
Boolean:该实例重写了valueOf()方法,返回基本类型值true或false,重写了toString()方法,返回字符串‘true’ 或‘false’,在实际中不怎么用到
var falseObject=new Boolean(false);
var result = falseObject && true; //返回true
注意:所有对象都会被转为true
Number:也重写了valueOf(),toLocaleString()和toString()方法
toFixed()://一般带有0-20个小数位
例:var num= 10 num.toFixed(2); //10.00 var num=10.005 num.Fixed(2) //10.01 对多处的小数位进行四舍五入
javascript 之 函数的更多相关文章
- JavaScript中函数函数的定义与变量的声明<基础知识一>
1.JavaScript中函数的三种构造方式 a.function createFun(){ } b.var createFun=function (){ } c.var createFun=new ...
- 理解 JavaScript 回调函数并使用
JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...
- 5种 JavaScript 调用函数的方法
一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性 ...
- javascript escape()函数和unescape()函数
javascript escape()函数和unescape()函数 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法: escape(string) stri ...
- JavaScript调用函数的方法
摘要:这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正 ...
- Javascript常用方法函数收集(二)
Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...
- javascript工具函数
第一部分 JavaScript工具函数 转义特殊字符为html实体 HtmlEncode: function(str){ return str.replace(/&/g, '&') ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- javascript篇-----函数作用域,函数作用域链和声明提前
在一些类似C语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的(也就是我们不能在代码段外直接访问代码段内声明的变量),我们称之为块级作用域,然而,不同于 ...
- JavaScript 常用函数总结
javascript函数: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数 .cookie函数 1.常规函数 javascript常规函数包括以下9个函数: (1)alert ...
随机推荐
- 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...
- mysql-8.0.15-winx64 解压版安装
官网下载了一个 mysql-8.0.15-winx64.zip 版本,解压部署过程记录如下: 1.将zip包解压到D盘 2.配置环境变量 在Path中加入D:\Program Files\mysql- ...
- 2018-2019-2 20165336《网络攻防技术》Exp5 MSF基础应用
2018-2019-2 20165336<网络攻防技术>Exp5 MSF基础应用 一.攻击实例 主动攻击的实践 ms08_067(成功) payload/generic/shell_rev ...
- Prometheus部署监控容器
Prometheus架构描述 Prometheus 是一个非常优秀的监控工具.准确的说,应该是监控方案.Prometheus 提供了监控数据搜集.存储.处理.可视化和告警一套完整的解决方案 Prome ...
- 关于SSD Trim功能
TRIM指令是微软联合各大SSD厂商所开发的一项技术,属于ATA8-ACS规范的技术指令. TRIM是告诉NAND闪存固态存储设备要擦除哪些数据的SATA接口指令.当相关页面的数据可以被覆盖时,操 ...
- JAVA获取汉字拼音首字母
package com.common.util; import java.io.UnsupportedEncodingException; /** * 取得给定汉字串的首字母串,即声母串 * Titl ...
- 基于FPGA的序列检测器10010
最近在学习状态机,用状态机实现序列检测器10010. 思路如下: 1. S0代表当前数据0,如果检测到0就停在S0,如果检测到1就进入S1. 2. S1代表当前数据1,如果检测到0就进入S2,如果检测 ...
- vue中上传文件之multipart/form-data
首先在项目里用了拦截器的,由于拦截器会将传递的参数转成对象,所以你i提交的时候会发现multipart/form-data或转变成application/json 其次关于input的文件上传是需要一 ...
- C#学习笔记(2)
1.获取当前可用串口端口号 using System.IO.Ports; string[] portNames = SerialPort.GetPortNames(); 2.TextBox换行.设置光 ...
- JAVA常用加密解密算法Encryption and decryption
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...