JavaScript 中的代码function
将在 "something" 调用它时执行。
当函数执行时,函数内部的代码不会被执行定义的。
函数内的代码在函数运行时执行调用。
通常使用“调用函数" instead of "调用函数”。
也常说"call upon a function"、"start a function" 或"execute a function"。
在本教程中,我们将使用调用,因为 JavaScript 函数可以在不被调用的情况下被调用。
上面的函数不属于任何对象。但在 JavaScript 中总是有一个默认的全局对象。
在 HTML 中,默认的全局对象是 HTML 页面本身,因此上面的"belongs" 函数针对的是 HTML 页面。
在浏览器中,页面对象是浏览器窗口。上面的函数自动成为窗口函数。
这是调用 JavaScript 函数的常见方法,但不是一个很好的做法。
全局变量、方法或函数很容易在全局对象中产生名称冲突和错误。
myFunction() 和 window.myFunction() 是同一个函数:
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
亲自试一试 »
在 JavaScript 中,this
关键字指的是对象。
哪个对象取决于如何this
正在被调用(使用或调用)。
这个this
关键字根据其使用方式指代不同的对象:
在对象方法中,this 指的是对象。 |
独自的,this 指的是全局对象。 |
在一个函数中,this 指的是全局对象。 |
在函数中,在严格模式下,this 是undefined 。 |
在一次活动中,this 指的是元素收到该事件的。 |
方法如call() ,apply() , 和bind() 可以参考this 到任何物体。 |
当函数在没有所有者对象的情况下被调用时,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
将是调用函数时创建的新对象。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!