javascript - 请问各位一js问题
PHP中文网
PHP中文网 2017-04-11 11:38:10
[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);
}

apply函数中第一个参数为绑定fn函数中的this,可是如果fn函数中没有this变量,如何把apply中第一个参数省略去?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
天蓬老师

建議是改良下函數:

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

這樣碰到需要綁定上下文的狀況下,就可以傳值,那假如沒傳就是 undefinedjavascript 會自動讓 this 指向 window (瀏覽器環境)。

主要是避免碰到下面狀況:

var person = function(name) {
    this.name = name
}

person.prototype.greeting = function(extra) {
    console.log(this)
    return this.name + ' say :' + ' Hello!' + extra
}

var andy = new person('andy')

// 如果不綁定 andy 到 context ,this.name 將會找不到值
console.log(argsAsArray(andy.greeting, ['Love U']))

// 用上面方式就可以綁定正確的上下文
console.log(argsAsArray(andy.greeting, ['Love U'], andy))
巴扎黑

传入 null 即可

巴扎黑

直接传人null

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

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