首页 > 请问各位一js问题

请问各位一js问题

将数组 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中第一个参数省略去?


建議是改良下函數:

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 即可

【热门文章】
【热门文章】