JavaScript中的Function.prototype.apply


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2020/05/16/JavaScript%E4%B8%AD%E7%9A%84Function-prototype-apply/

摘要

本文主要讲述了:

  1. 作用
  2. 备注

正文

作用

使用指定的this和以数组形式提供的参数来调用函数。

示例:

1
2
3
4
5
6
7
8
9
10
var foo = {
name: 'foo',
};

function sayHello(time, guestName) {
console.log('Good ' + time + ', ' + guestName + "! I'm " + this.name + '.');
}

// 输出:"Good afternoon, bar! I'm foo."
sayHello.apply(foo, ['afternoon', 'bar']);

备注

参数

this

非严格模式下,如果thisundefinednull,运行时会将其替换为全局对象,如果this为其他原始类型,运行时会将其转换为对象。

1
2
3
4
5
6
7
8
9
10
function foo() {
console.log(this);
}

foo.apply(undefined);
foo.apply(null);
foo.apply('123');
foo.apply(123);
foo.apply(true);
foo.apply(Symbol());

严格模式下,以上特性皆不存在。

1
2
3
4
5
6
7
8
9
10
11
12
'use strict';

function foo() {
console.log(this);
}

foo.apply(undefined);
foo.apply(null);
foo.apply('123');
foo.apply(123);
foo.apply(true);
foo.apply(Symbol());

其余参数

ES5 接受以类数组对象形式提供的参数,例如:arguments

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2020/05/16/JavaScript%E4%B8%AD%E7%9A%84Function-prototype-apply/


本文对你有帮助?请支持我


支付宝
微信