javascript - js中apply和call的疑问

查看:125
本文介绍了javascript - js中apply和call的疑问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

看了很多篇讲解call和apply的文章,感觉理解上越来越混乱T.T
一篇文章里有这样一个例子:

// 获得数组中最大的元素
var arr = [1, 8, 10, 3, 24, 89, 26];
var m = Math.max.apply(Math, arr); // m => 89

我想问的是,为什么这里可以实现获取最大数值的元素呢?为什么要在apply的第一个参数那里把Math自己给传进去呢?apply的第一个参数不是指定函数运行时的作用域吗?理解不了...

下面这个例子我能看懂,但是上面那个例子怎么也理解不了

var name = 'out';

var o1 = {
    name: 'hello'
};

var o2 = {
    name: 'world'
};

function sayName() {
    alert(this.name);
}

sayName.call(this); // out
sayName.call(window); // out
sayName.call(o1); // hello
sayName.call(o2); // world

有哪位可以回答一下我的疑问吗,谢谢啦≡ω≡

解决方案

其实这里不一定非要传Math啊,因为Math.max这个方法内部并不会有操作到this,
所以Math.max.apply的第一个参数随便你传什么,null,undefined都行的。
这里应该只是顺手写了Math而已吧。

这篇关于javascript - js中apply和call的疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆