码迷,mamicode.com
首页 > 移动开发 > 详细

函数深入理解---函数的属性length和方法call 和apply

时间:2014-12-15 15:24:03      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   使用   sp   on   div   

函数同样有两个非常好用的属性:length 和prototype

function fn1(){

}

function fn2(num1,num2){

}

function fn3(num1){

}

//函数的length就表示该函数所期望的参数值
alert(fn1.length) // 0
alert(fn2.length) // 2
alert(fn3.length) // 1


call 和apply方法查可以通过函数名称来调用函数

对于apply而言
有两个参数,第一个是调用的上下文,第二个是参数数组,可以直接把
arguments传递进去

对于call而言
第一个参数是上下文对象,后面的参数是不同函数参数

function sum(num1,num2){
    return num1 + num2;
}

function callSum1(num1,num2){
    //使用sum 这个函数来完成一次调用,调用的参数就是callSum1这个函数的参数
    //apply的第二个参数表示一组参数的数组
    return sum,apply(this,arguments)
}


function callSum2(num1,num2){
    // 关键就是第二个参数是数组
    return sum.apply(this,[num1,num2]);
}

alert(callSum1(12,22));
alert(callSum2(22,32));


function callSum3(num1,num2){
    //call是通过参数列表来完成传递,其它和apply没有任何区别
    return sum.call(this,num1,num2);
}

alert(callSum3(12,22));


/*
    当需要创建一个类的时候,设置类的属性和方法需要通过this关键字来引用
    但是特别注意:this关键字在调用时会根据不同的调用对象变得不同
*/

var color = ‘red‘;

function showcolor(){
    alert(this.color);
}

//创建了一个类,有一个color的属性和一个show的方法

function circle(color){
    this.color = color;
}

var c= new Circle(‘yellow‘);

showColor.call(this) //使用上下文来调用showColor,结果是red
showColor.call(c); //上下文对象是以,结果就是yellow

/*
    通过以上发现,使用call和apply之后,对象中可以不需要定义方法了
    这就是call和apply的一种运用
*/

 

函数深入理解---函数的属性length和方法call 和apply

标签:style   blog   io   ar   color   使用   sp   on   div   

原文地址:http://www.cnblogs.com/leole/p/4164871.html

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