JavaScript函数调用

JavaScript函数调用

JavaScript 函数调用

❮ 上一篇 下一篇 ❯

JavaScript function 中的代码将在“某事”调用它时执行。

调用 JavaScript 函数

函数中的代码在函数被定义时不会执行。

函数中的代码在函数被调用时执行。

使用“调用函数”而不是“调用函数”是很常见的。

同样,也可以说“调用函数”、“启动函数”或“执行函数”。

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

将函数作为函数调用

示例

function myFunction(a, b) { return a * b;

}myFunction(10, 2); // 将返回 20

自己动手试一试 »

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

在 HTML 中,默认的全局对象是 HTML 页面本身,所以上面的函数“属于”HTML 页面。

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

注意

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

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

示例

function myFunction(a, b) { return a * b;

}window.myFunction(10, 2); // 也将返回 20

自己动手试一试 »

什么是 this?

在 JavaScript 中,this 关键词指向一个对象。

this 关键词指向不同的对象,具体取决于它的使用方式。

在对象方法中,this 指向对象。

单独使用时,this 指向全局对象。

在函数中,this 指向全局对象。

在严格模式下的函数中,this 是 undefined。

在事件中,this 指向接收事件的元素。

诸如 call()、apply() 和 bind() 等方法可以将 this 指向任何对象。

注意

this 不是一个变量。它是一个关键词。你不能改变 this 的值。

另请参阅

JavaScript this 教程

全局对象

当一个函数在没有所有者对象的情况下被调用时,this 的值将是全局对象。

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

此示例返回 window 对象作为 this 的值

示例

let x = myFunction(); // x 将是 window 对象function myFunction() { return this;

}

自己动手试一试 »

将函数作为全局函数调用,会导致 this 的值为全局对象。将 window 对象用作变量很容易导致程序崩溃。

将函数作为方法调用

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

以下示例创建了一个对象(myObject),它有两个属性(firstName 和 lastName),以及一个方法(fullName)。

示例

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

}

}myObject.fullName(); // 将返回 "John Doe"

自己动手试一试 »

fullName 方法是一个函数。该函数属于该对象。myObject 是该函数的拥有者。

被称为 this 的东西,是“拥有”JavaScript 代码的对象。在这种情况下,this 的值是 myObject。

试试看!将 fullName 方法更改为返回 this 的值

示例

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

}}

// 这将返回 [object Object](所有者对象)myObject.fullName();

自己动手试一试 »

将函数作为对象方法调用,会导致 this 的值为对象本身。

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

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

看起来您创建了一个新函数,但由于 JavaScript 函数是对象,您实际上是创建了一个新对象。

示例

// 这是一个函数构造函数function myFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2;

}

// 这会创建一个新对象const myObj = new myFunction("John", "Doe");

// 这将返回 "John"myObj.firstName;

自己动手试一试 »

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

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

❮ 上一篇 下一篇 ❯

★ +1

W3schools 学习路径

跟踪您的进度 - 免费!

登录 注册

相关作品

有声问答
365bet线上手机投注

有声问答

📅 06-29 👀 8305
Python format 格式化函数
365bet365用网址

Python format 格式化函数

📅 02-21 👀 5481