码迷,mamicode.com
首页 > 编程语言 > 详细

对JavaScript函数的基础了解

时间:2015-11-17 23:09:04      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

  在js中函数实际上是对象,函数名就是指向函数对象的指针,使用函数名访问的是函数的指针,函数名后面加括号则是调用函数,使其执行。

  把一个函数名当做参数传递给另一个函数是,此时参数只是一个指向函数对象的指针。

  函数没有重载,这个结论可以由以上结论得出。

function add(num){

  return num+100;      

}

function add(num){

  return num+200;

}

var result=add(100);

console.log(result);

结果:300

解释:后面的add覆盖了前面的函数。

**********************************************************************************************************************

  函数内部有两个特殊的属性:arguments和this

  arguments:是以个类数组对象,保存了传递给函数的所有参数。它有一个属性叫callee,callee是一个指针,指向拥有arguments这个类对象的构造函数。

function test(num){

  if(num<=1){

    return 1;

  }else{

    return num * test(num-1);      //这里可以改写为  return num * arguments.callee(num-1);这样,无论以后函数名改成什么都可是实现递归的作用。

  }

}

  this:引用的是函数具体执行的环境对象

window.color="red";

var o={color:"blue"};

function show(){

  console.log(this.color);

}

show();       1 //打印结果为:red

o.show=show;   //在这里很好的说明函数名其实就是一个指向函数的指针

o.show();      2 //打印结果为:blue

分析:在1处,this引用的是全局对象window,在2处this引用的是o这个对象。

************************************************************************************************************************

  关于call()和apply()方法的理解:

  call()和apply()具有相同的作用,他们的作用就是扩充作用域,对象不需要和方法有任何耦合关系。

  call()和apply()的区别就是接收参数的不同,call()接收的参数必须逐个列举出来。

  如果传入的参数是一个arguments对象或者数组,那么建议采用apply方式会比较方便。

function sum(a,b){

  return a+b;

}

function callsum(a,b){

  return sum.call(this,a,b);  //第一个参数this不需要改变外,其他参数都要直接传递给函数

}

console.log(callsum(10,10));  //结果为:20

*************************************************************************************************************************

  bind()方法理解:

  bind方法会创建一个函数的实例,并且把this传递给传入的对象

window.color="red";

var o={color:"blue"};

function show(){

  console.log(this.color);

}

var oo=show.bind(o);

console.log(00);    //打印结果为blue

***********************************************************************************************************************

今天学了这些,有遗漏,估计也有错误。今后还得继续努力加油。

 

对JavaScript函数的基础了解

标签:

原文地址:http://www.cnblogs.com/yujiaqinzheng/p/4973036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!