注意:函数名仅仅是一个包含指针的变量而已

函数内部属性

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 之 函数的更多相关文章

  1. JavaScript中函数函数的定义与变量的声明<基础知识一>

    1.JavaScript中函数的三种构造方式 a.function createFun(){ } b.var createFun=function (){ } c.var createFun=new ...

  2. 理解 JavaScript 回调函数并使用

    JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...

  3. 5种 JavaScript 调用函数的方法

    一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性 ...

  4. javascript escape()函数和unescape()函数

    javascript escape()函数和unescape()函数 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法: escape(string) stri ...

  5. JavaScript调用函数的方法

    摘要:这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正 ...

  6. Javascript常用方法函数收集(二)

    Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...

  7. javascript工具函数

    第一部分 JavaScript工具函数 转义特殊字符为html实体   HtmlEncode: function(str){ return str.replace(/&/g, '&') ...

  8. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  9. javascript篇-----函数作用域,函数作用域链和声明提前

    在一些类似C语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的(也就是我们不能在代码段外直接访问代码段内声明的变量),我们称之为块级作用域,然而,不同于 ...

  10. JavaScript 常用函数总结

    javascript函数:  ·常规函数  ·数组函数  ·日期函数  ·数学函数  ·字符串函数 .cookie函数 1.常规函数 javascript常规函数包括以下9个函数:  (1)alert ...

随机推荐

  1. PySe-007-解决“Chrome正在受到自动软件的控制”

    python使用selenium启动chrome的代码如下所示: #!/usr/local/bin/python # -*- coding: utf-8 -*- from selenium impor ...

  2. Java面试题和解答(一)

    1.说说JVM原理?内存泄露与溢出区别,何时产生内存泄露? JVM原理 :http://www.cnblogs.com/jiayi/archive/2010/06/08/1753863.html 内存 ...

  3. vue中loding

    <template> <div class="mf-loading-container" v-show="ifShow"> <im ...

  4. ElasticSearch 随笔

     1.如何用亚马逊S3存储一个ES服务索引.http://t.cn/R0fAJwK 2.ELK实战 - 利用Nginx日志分析API耗时.http://t.cn/R6sgQfU 3.Kibana中的地 ...

  5. Python操作MongoDB看这一篇就够了

    MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档.数组及文档数组,非常灵活.在这一节中,我们就来看 ...

  6. 编年史:OI测试

    2019.4.18 t1:给出不定方程ax+by+c=0,求x在x1~x2并且y在y1~y2时的解个数.考场上想的是一个扩欧板子敲下去,然后构造出x>=x1的最小解,同时得出y,然后通过通项来枚 ...

  7. Java课程02-动手动脑

    1.编写一个方法,生成一千个随机数,纯随机数发生器. package random; public class random { public static void main(String[] ar ...

  8. 光圈,快门, 曝光,焦距, ISO,景深。

    光圈,快门, 曝光,焦距, ISO,景深. ISO(感光度)与图片质量 ISO -- 感光度,是一个曝光率极高的词,我们在超市买饼干的时候就可能会看见包装袋上写:本公司已通过ISO9001质量体系认证 ...

  9. Java IO和Java NIO 和通道 在文件拷贝上的性能差异分析

    1.  在JAVA传统的IO系统中,读取磁盘文件数据的过程如下: 以FileInputStream类为例,该类有一个read(byte b[])方法,byte b[]是我们要存储读取到用户空间的缓冲区 ...

  10. MVC(I)

    实际开发我们是这样的: