js中apply()方法与call()方法详解

js中apply()方法与call()方法详解

    之前见过这两个方法,只是一知半解。今天再次碰见,无奈只好仔细研究一下,通过查看一些资料,总结整理备注如下:

首先,简单分析一下这两个方法:

     1.obj.apply([thisObj[,argArray]]):用thisObj对象作当前对象调用obj的方法,继承obj的属性,argArray是方法(或构造方法)的参数数组;

     2.obj.call([thisObj[,arg1[, arg2[[,.argN]]]]]):该方法与apply()方法意思一样,只是参数列表不同。

其次,分别说明这两个方法的应用:

//定义一个Person类
function Person(name, age){
    this.name = name;
    this.age = age;
}
//定义一个Student类
function Student(name, age, grade) {
    Person.apply(this, arguments); //Person引用函数对象,student对象调用Person构造方法
    //Person.call(this, name, age);
    this.grade = grade;
}
var student = new Student("James", 20, "二年级");
alert("name: " + student.name + "\nage: "+student.age + "\ngrade: " + student.grade);
//显示结果name:zhangsan age:20 grade: 二年级
最后,介绍一下apply()方法的巧妙用法:

    1.Math.max([number1[,number2[. . . [,numberN]]]]):返回给出的零个或多个数值表达式中较大者,该方法不接受数组参数,利用Math.max.apply(null,array)可以轻易得到一个数组中的最大项(可以理解为:apply会将数组解析成一个个的参数)

     2.arrayObj.push([item1[item2[. . . [itemN ]]]]):将新元素添加到一个数组中,并返回数组的新长度值,该方法同样不接受数组参数,也可利用Array.prototype.push.apply(arr1,arr2)巧妙的实现将一个数组添加到另一个数组后面。

    以上都是利用apply()方法将参数数组组装成参数集合的特点巧妙的解决了实际问题。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值