目录

JavaScript 函数调用


JavaScript 中的代码function将在 "something" 调用它时执行。


调用 JavaScript 函数

当函数执行时,函数内部的代码不会被执行定义的

函数内的代码在函数运行时执行调用

通常使用“调用函数" instead of "调用函数”。

也常说"call upon a function"、"start a function" 或"execute a function"。

在本教程中,我们将使用调用,因为 JavaScript 函数可以在不被调用的情况下被调用。


作为函数调用函数

示例

function myFunction(a, b) {
  return a * b;
}
myFunction(10, 2);           // Will return 20
亲自试一试 »

上面的函数不属于任何对象。但在 JavaScript 中总是有一个默认的全局对象。

在 HTML 中,默认的全局对象是 HTML 页面本身,因此上面的"belongs" 函数针对的是 HTML 页面。

在浏览器中,页面对象是浏览器窗口。上面的函数自动成为窗口函数。

笔记

这是调用 JavaScript 函数的常见方法,但不是一个很好的做法。
全局变量、方法或函数很容易在全局对象中产生名称冲突和错误。

myFunction() 和 window.myFunction() 是同一个函数:

示例

function myFunction(a, b) {
  return a * b;
}
window.myFunction(10, 2);    // Will also return 20
亲自试一试 »

什么是this

在 JavaScript 中,this关键字指的是对象

哪个对象取决于如何this正在被调用(使用或调用)。

这个this关键字根据其使用方式指代不同的对象:

在对象方法中,this指的是对象
独自的,this指的是全局对象
在一个函数中,this指的是全局对象
在函数中,在严格模式下,thisundefined
在一次活动中,this指的是元素收到该事件的。
方法如call(),apply(), 和bind()可以参考this任何物体

笔记

this不是变量。这是一个关键字。您无法更改的值 this

也可以看看:

JavaScriptthis教程



全局对象

当函数在没有所有者对象的情况下被调用时,this成为全局对象。

在网络浏览器中,全局对象是浏览器窗口。

此示例返回窗口对象作为值this

示例

let x = myFunction();            // x will be the window object

function myFunction() {
  return this;
}
亲自试一试 »

将函数作为全局函数调用,会导致值这个成为全局对象。
使用窗口对象作为变量很容易使程序崩溃。


将函数作为方法调用

在 JavaScript 中,您可以将函数定义为对象方法。

以下示例创建一个对象 (我的对象),有两个性质()和一个方法(全名):

示例

const myObject = {
  firstName:"John",
  lastName: "Doe",
  fullName: function () {
    return this.firstName + " " + this.lastName;
  }
}
myObject.fullName();         // Will return "John Doe"
亲自试一试 »

这个全名方法是一个函数。函数属于对象。我的对象是函数的所有者。

那个东西叫做this,是 "owns" JavaScript 代码的对象。在这种情况下的值this我的对象

测试一下!改变全名方法返回值this

示例

const myObject = {
  firstName:"John",
  lastName: "Doe",
  fullName: function () {
    return this;
  }
}

// This will return [object Object] (the owner object)
myObject.fullName();
亲自试一试 »

将函数作为对象方法调用,会导致以下值this成为物体本身。


使用函数构造函数调用函数

如果函数调用前面带有new关键字,它是构造函数调用。

看起来你创建了一个新函数,但由于 JavaScript 函数是对象,所以你实际上创建了一个新对象:

示例

// This is a function constructor:
function myFunction(arg1, arg2) {
  this.firstName = arg1;
  this.lastName  = arg2;
}

// This creates a new object
const myObj = new myFunction("John", "Doe");

// This will return "John"
myObj.firstName;
亲自试一试 »

构造函数调用创建一个新对象。新对象从其构造函数继承属性和方法。

这个this构造函数中的关键字没有值。
的值this将是调用函数时创建的新对象。