JavaScript中函数的四种调用方式(若有错误之处请斧正)

函数的几种调用方式

一、一般形式函数的直接调用

fun();

二、作为对象的方法调用

var obj = {
    name:"123",
    sayMyage:function(age){
        alert(age);
    }
};
obj.sayMyage(age);

三、使用callapply动态调用

  • call()
var obj = {};
function test(){
    this.xxx = "123";
};
test.call(obj);//可以让一个函数成为指定对象的方法来调用
console.log(obj.xxx);//out:123

下面示例使用 call 动态调用函数 f,并传入参数值 3 和 4,返回运算值。

function f(x,y) {  //定义求和函数
    return x + y;
}
console.log(f.call (null, 3, 4));  //返回7

​ f 是一个简单的求和函数,通过 call 方法把函数 f 绑定到空对象 null 身上,以实现动态调用函数 f,同时把参数 3 和 4 传递给函数 f,返回值为 7。实际上,f.call(null,3,4) 等价于 null.m(3,4)。

  • apply()

    下面使用 apply 方法设计一个求最大值得函数:

    function max() {  //求最大值函数
        var m = Number.NEGATIVE_INFINITY;  //声明一个负无穷大的数值
        for (var i = 0; i < arguments.length; i ++) {  //遍历所有实参
            if (arguments[i] > m)  //如果实参值大于变量m
            m = arguments[i];  //则把该实参值赋值给m
        }
        return m;  //返回最大值
    }
    var a = [23,45,2,46,62,45,56,63];  //声明并初始化数组
    var m = max.apply(Object, a);  //动态调用max,绑定为Object的方法
    console.log(m);  //返回63
    

    ​ 首先通过 apply 方法动态调用 max() 函数,然后把它绑定为 Object 对象的一个方法,并把包含多个值的数组传递给它,最后返回经过 max() 计算后的最大数组元素。

    ​ 如果使用 call 方法,就需要把数组所有元素全部读取出来,再逐一传递给 call 方法,显然这种做法不是方便。

    • 注意:使用call()和apply()方法可以将一个函数转换为指定对象的方法,并在该对象上使用该方法。当函数动态调用之后,这个对象的临时方法也就不存在了

      例如:

      function fun(){
          return "这是fun函数";
      }
      var obj = {};
      fun.call(obj);//吧=把函数fun绑定成obj的方法
      console.log(obj.fun());//再次调用该方法,将会报错
      

四、使用构造函数调用函数

//构造函数
function fun(item1,item2){
    this.firstName = item1;
    this.lastName = item2;
};
// This    creates a new object
var x = new fun("Mike","Danny");
console.log(x.firstName);//out:"Mike"

构造函数的调用会创建一个新的对象。新对象会继承构造函数的属性和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值