javascript - 请问各位一道题
迷茫
迷茫 2017-04-11 11:32:00
[JavaScript讨论组]

将数组 arr 中的元素作为调用函数 fn 的参数
输入例子:
argsAsArray(function (greeting, name, punctuation) {return greeting + ', ' + name + (punctuation || '!');}, ['Hello', 'Ellie', '!'])

输出例子:
Hello, Ellie!

function argsAsArray(fn, arr) {
    return fn.apply(this, arr);
}

在这段代码中this是干吗用的?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(7)
巴扎黑

请了解apply的用法。

PHP中文网

因为Js的this是动态绑定的

这个写法让 this 一定绑定在arr上

阿神

粗浅的回答一下this的概念。
比如你列了10个按钮,并用循环把10个按钮都赋予一个onclick事件。那么你点的时候怎么让程序知道你点的是哪个呢?
那就用this,this就是挑选出当前的对象,你点按钮1,那this就是这个按钮1。以此类推…

PHP中文网

指定,上面是两个参数,下面的this就可以指定是哪个参数

怪我咯

作用域问题,了解下call和apply的用法:https://segmentfault.com/a/1190000005012843

高洛峰

这里涉及到了作用域的问题,this一般指代当前函数下的一个全局对象。当你使用回调的时候,回调函数内部的this就和外部函数的this不是一个,你用到的变量在外部的全局对象上,在回调函数内使用就编程undefined了。所以常看见在外部函数用var self=this;这种语句。这种语句的作用是把外部的作用域带入回调函数内部,在回调函数内部也能使用外部的全局对象。你上边的方法的作用是一样的,只不过写的比较隐蔽,把外部的this作为参数传入回调函数,这样内部回调函数就能使用外部全局对象上绑定的变量和方法等。听起来很绕嘴,多感受几次就好了。

天蓬老师

如果你要问 this 在这个函数里有什么用,我会告诉你,并没什么用。
不信你改成:

function argsAsArray(fn, arr) {
    return fn.apply(null, arr);
}

这样照样能得出你要的答案

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号