javascript代码实例教程-javascript中 Function.prototype.apply()与Function.prototype.call() 对比详解

发布时间:2019-01-25 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-javascript中 Function.prototype.apply()与Function.prototype.call() 对比详解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 apply()方法可以在使用一个指定的 this 值和一个参数数组(或类数组对象)的前提下调用某个函数或方法。call()方法类似于apply(),不同之处仅仅是call()接受的参数是参数列表。

简而言之:

apply()一个this,一个参数

call()   一个this,多个参数

语法

 

fun.apply(thisarg[, argsArray])|fun.call(thisArg[, arg1[, arg2[, ...]]])

参数

 

apply():

thisArg:在fun函数运行时指定的this值。需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下,则指定为null和undefined的this值会自动指向全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象。

argsArray:数组(或类数组对象)

call():

thisArg:同apply()的参数描述。

arg1[,arg2[,arg3[……]]]:参数列表

 

 

//apply()的demo

function SITeinfo(name,site) {

    this.name = name;

    this.site = site;

}

function ContactMe(name,site,QQ) {

    //SiteInfo.apply(this, {0:name, 1:site, length:2});

    //SiteInfo.apply(this, [name, site]);

    SiteInfo.apply(this, arguments);

    this.qq = qq;

}

VAR contactMe = new ContactMe("unofficial","www.pushself.COM","1936**3***");

console.LOG("你好,我是"+contactMe.name+",欢迎访问"+contactMe.site+",有问题可以留言,也可以通过QQ:"+contactMe.qq+"及时联系到我");

这里是apply()的应用,其中主要注意的是argsArray这个参数,它可以是数组,也可以是类数组对象。

arguments对象是所有方法中提供的一个局部变量;不能在方法的原型属性中使用。需要特别说明的是arguments不是一个数组,只是一个类数组。

 

//call()的demo

function SiteInfo(name,site) {

    this.name = name;

    this.site = site;

}

function ContactMe(name,site,qq) {

    SiteInfo.call(this, name, site);

    this.qq = qq;

}

var contactMe = new ContactMe("unofficial","www.pushself.com","1936**3***");

console.log("你好,我是"+contactMe.name+",欢迎访问"+contactMe.site+",有问题可以留言,也可以通过QQ:"+contactMe.qq+"及时联系到我");

这里是call()的应用,其中需要注意的是第二个参数是由很多的参数构成的一个列表。

本文原创博客地址:https://www.cnblogs.com/unofficial 官网地址: www.pushself.com

扩展DEMO

可以用apply()求数组中最大值,例如,我要求一个数组var arr = [19,360,0,3000];

 

var arr = [19,360,0,3000],

    maxVal = Math.max.apply(null, arr),

    minVal = Math.min.apply(null, arr);

console.log("arr中最大值为:"+maxVal+",最小值为:"+minVal);

这个是利用apply()求数组中的最大值,通常我们利用Math.max()求的是一个列表的最大值,例如:Math.max(19,360,0,3000),得到最大值为3000,如果这个是一个数组或者一个数组对象,我们怎么求得它的最大值呢?就是利用apply()来解决,Math.max.apply(null, arr)相当于this对象就是Math.max,将arr经过apply()后处理成了列表,最后求得最大值,或者最小值。

 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-javascript中 Function.prototype.apply()与Function.prototype.call() 对比详解全部内容,希望文章能够帮你解决javascript代码实例教程-javascript中 Function.prototype.apply()与Function.prototype.call() 对比详解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。