Phương pháp tái sử dụng
Với phương thức call[]
, bạn có thể viết một phương thức có thể được sử dụng trên các đối tượng khác nhau.
Tất cả các chức năng là phương pháp
Trong JavaScript, tất cả các chức năng là các phương thức đối tượng.
Nếu một hàm không phải là phương thức của đối tượng JavaScript, thì đó là một hàm của đối tượng toàn cầu [xem chương trước].
Ví dụ dưới đây tạo ra một đối tượng với 3 thuộc tính, tên FirstName, lastName, fullName.
Thí dụ
const person = {& nbsp; & nbsp; firstName: "john", & nbsp; & nbsp; lastName: "doe", & nbsp; fullName: function [] {& nbsp; & nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}}
firstName:"John",
lastName: "Doe",
fullName: function [] {
return this.firstName + " " + this.lastName;
}
}
// Điều này sẽ trả lại "John Doe": person.fullname [];
person.fullName[];
Hãy tự mình thử »
Trong ví dụ trên, this
đề cập đến đối tượng người.person object.
this.firstName có nghĩa là thuộc tính đầu tiên của điều này. means the firstName property of this.
Giống như:
this.firstName có nghĩa là thuộc tính đầu tiên của người. means the firstName property of person.
Cái này là cái gì?this?
Trong JavaScript, từ khóa this
đề cập đến một đối tượng.object.
Đối tượng nào phụ thuộc vào cách this
được gọi [được sử dụng hoặc gọi]. object depends on how this
is being invoked [used or called].
Từ khóa this
đề cập đến các đối tượng khác nhau tùy thuộc vào cách sử dụng:
Trong một phương thức đối tượng, this đề cập đến đối tượng.object.
|
Một mình, this đề cập đến đối tượng toàn cầu.global object.
|
Trong một chức năng, this đề cập đến đối tượng toàn cầu.global object.
|
Trong một hàm, ở chế độ nghiêm ngặt, this là undefined . |
Trong một sự kiện, this đề cập đến yếu tố đã nhận được sự kiện.element that received the event.
|
Các phương thức như call[] , this 2 và this 3 có thể giới thiệu this cho bất kỳ đối tượng nào.any object.
|
Phương thức call [] call call []
Phương pháp call[]
là phương pháp JavaScript được xác định trước.
Nó có thể được sử dụng để gọi [gọi] một phương thức với một đối tượng chủ sở hữu làm đối số [tham số].
Với call[]
, một đối tượng có thể sử dụng một phương thức thuộc về một đối tượng khác.
Ví dụ này gọi phương thức FullName của người, sử dụng nó trên Person1:fullName method of person, using it on person1:
Thí dụ
const person = {& nbsp; & nbsp; firstName: "john", & nbsp; & nbsp; lastName: "doe", & nbsp; fullName: function [] {& nbsp; & nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}}
fullName:
function[] {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// Điều này sẽ trả lại "John Doe": person.fullname [];
person.fullName.call[person1];
Hãy tự mình thử »
Trong ví dụ trên, this
đề cập đến đối tượng người.fullName method of person, using it on person2:
Thí dụ
const person = {& nbsp; & nbsp; firstName: "john", & nbsp; & nbsp; lastName: "doe", & nbsp; fullName: function [] {& nbsp; & nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}}
fullName: function[] {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// Điều này sẽ trả lại "John Doe": person.fullname [];
person.fullName.call[person2];
Hãy tự mình thử »
Trong ví dụ trên, this
đề cập đến đối tượng người.
this.firstName có nghĩa là thuộc tính đầu tiên của điều này.
Thí dụ
const person = {& nbsp; & nbsp; firstName: "john", & nbsp; & nbsp; lastName: "doe", & nbsp; fullName: function [] {& nbsp; & nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}}
fullName: function[city, country] {
return this.firstName + " " + this.lastName + "," + city + "," +
country;
}
}
// Điều này sẽ trả lại "John Doe": person.fullname [];
firstName:"John",
lastName: "Doe"
}
Hãy tự mình thử »
Hãy tự mình thử »
Trong JavaScript, bạn có thể định nghĩa các hàm là phương thức đối tượng.
Ví dụ sau tạo một đối tượng [myObject], với hai thuộc tính [FirstName và LastName] và một phương thức [fullName]:
const myObject = {& nbsp; & nbsp; firstName: "john", & nbsp; Tên cuối cùng: "doe", & nbsp; fullName: function [] {& nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}} myObject.fullName []; & nbsp; // sẽ trả lại "John Doe"defined.
Phương thức FullName là một hàm. Hàm thuộc về đối tượng. MyObject là chủ sở hữu của chức năng.invoked.
Thứ gọi là this
, là đối tượng "sở hữu" mã JavaScript. Trong trường hợp này, giá trị của this
là myObject.call a function" instead of "invoke a function".
Kiểm tra nó! Thay đổi phương thức FullName để trả về giá trị của this
:
const myObject = {& nbsp; tên đầu tiên: "John", & nbsp; Tên cuối cùng: "doe", & nbsp; fullName: function [] {& nbsp; & nbsp; trả lại cái này; & nbsp; & nbsp;}}invoke, because a JavaScript function can be invoked without being called.
// Điều này sẽ trả về [đối tượng đối tượng] [đối tượng chủ sở hữu] myObject.fullName [];
Thí dụ
Đặt x = myFunction []; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // x sẽ là đối tượng cửa sổ
return a * b;
}
myFunction[10, 2]; // Will return 20
Hãy tự mình thử »
Gọi một chức năng như một hàm toàn cầu, khiến giá trị của việc này trở thành đối tượng toàn cầu. Sử dụng đối tượng cửa sổ làm biến có thể dễ dàng làm hỏng chương trình của bạn.
Gọi một chức năng như một phương thức
Trong JavaScript, bạn có thể định nghĩa các hàm là phương thức đối tượng.
Ví dụ sau tạo một đối tượng [myObject], với hai thuộc tính [FirstName và LastName] và một phương thức [fullName]:
const myObject = {& nbsp; & nbsp; firstName: "john", & nbsp; Tên cuối cùng: "doe", & nbsp; fullName: function [] {& nbsp; & nbsp; Trả về this.FirstName + "" + this.lastName; & nbsp; & nbsp;}} myObject.fullName []; & nbsp; // sẽ trả lại "John Doe"
Global variables, methods, or functions can easily create name conflicts and bugs in the global object.
Phương thức FullName là một hàm. Hàm thuộc về đối tượng. MyObject là chủ sở hữu của chức năng.
Thí dụ
Đặt x = myFunction []; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // x sẽ là đối tượng cửa sổ
return a * b;
}
window.myFunction[10, 2]; // Will also return 20
Hãy tự mình thử »
Gọi một chức năng như một hàm toàn cầu, khiến giá trị của việc này trở thành đối tượng toàn cầu. Sử dụng đối tượng cửa sổ làm biến có thể dễ dàng làm hỏng chương trình của bạn.this?
Gọi một chức năng như một phương thứcobject.
Trong JavaScript, bạn có thể định nghĩa các hàm là phương thức đối tượng. object depends on how this
is being invoked [used or called].
Ví dụ sau tạo một đối tượng [myObject], với hai thuộc tính [FirstName và LastName] và một phương thức [fullName]:
Trong một phương thức đối tượng, this đề cập đến đối tượng.object.
|
Một mình, this đề cập đến đối tượng toàn cầu.global object.
|
Trong một chức năng, this đề cập đến đối tượng toàn cầu.global object.
|
Trong một hàm, ở chế độ nghiêm ngặt, this là undefined . |
Trong một sự kiện, this đề cập đến yếu tố đã nhận được sự kiện.element that received the event.
|
Các phương thức như call[] , this 2 và this 3 có thể giới thiệu this cho bất kỳ đối tượng nào.any object.
|
Đối tượng toàn cầu
Khi một hàm được gọi mà không có đối tượng chủ sở hữu, giá trị của this
trở thành đối tượng toàn cầu.
Trong một trình duyệt web, đối tượng toàn cầu là cửa sổ trình duyệt.
Ví dụ này trả về đối tượng cửa sổ là giá trị của this
:
Thí dụ
Đặt x = myFunction []; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // x sẽ là đối tượng cửa sổ
hàm myFunction [] {& nbsp; & nbsp; trả về cái này; }
return this;
}
Hãy tự mình thử »
Gọi một chức năng như một hàm toàn cầu, khiến giá trị của việc này trở thành đối tượng toàn cầu. Sử dụng đối tượng cửa sổ làm biến có thể dễ dàng làm hỏng chương trình của bạn.this to be the global object.
Using the window object as a variable can easily crash your program.
Gọi một chức năng như một phương thức
Trong JavaScript, bạn có thể định nghĩa các hàm là phương thức đối tượng.
Ví dụ sau tạo một đối tượng [myObject], với hai thuộc tính [FirstName và LastName] và một phương thức [fullName]:myObject], with two properties [firstName and lastName], and a method [fullName]:
Thí dụ
Đặt x = myFunction []; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // x sẽ là đối tượng cửa sổ
firstName:"John",
lastName: "Doe",
fullName: function [] {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName[]; // Will return "John Doe"
Hãy tự mình thử »
Gọi một chức năng như một hàm toàn cầu, khiến giá trị của việc này trở thành đối tượng toàn cầu. Sử dụng đối tượng cửa sổ làm biến có thể dễ dàng làm hỏng chương trình của bạn.fullName method is a function. The function belongs to the object. myObject is the owner of the function.
Gọi một chức năng như một phương thứcmyObject.
Trong JavaScript, bạn có thể định nghĩa các hàm là phương thức đối tượng.fullName method to return the value of
this
:
Thí dụ
Đặt x = myFunction []; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // x sẽ là đối tượng cửa sổ
firstName:"John",
lastName: "Doe",
fullName: function [] {
return this;
}
}
hàm myFunction [] {& nbsp; & nbsp; trả về cái này; }
myObject.fullName[];
Hãy tự mình thử »
Gọi một chức năng như một hàm toàn cầu, khiến giá trị của việc này trở thành đối tượng toàn cầu. Sử dụng đối tượng cửa sổ làm biến có thể dễ dàng làm hỏng chương trình của bạn.
Gọi một chức năng như một phương thức
Trong JavaScript, bạn có thể định nghĩa các hàm là phương thức đối tượng.
Ví dụ sau tạo một đối tượng [myObject], với hai thuộc tính [FirstName và LastName] và một phương thức [fullName]:
Thí dụ
Đặt x = myFunction []; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // x sẽ là đối tượng cửa sổ
function myFunction[arg1, arg2] {
this.firstName = arg1;
this.lastName
= arg2;
}
hàm myFunction [] {& nbsp; & nbsp; trả về cái này; }
const myObj = new myFunction["John", "Doe"];
Hãy tự mình thử »
myObj.firstName;
Hãy tự mình thử »
Gọi một chức năng như một hàm toàn cầu, khiến giá trị của việc này trở thành đối tượng toàn cầu. Sử dụng đối tượng cửa sổ làm biến có thể dễ dàng làm hỏng chương trình của bạn.
Gọi một chức năng như một phương thức
The
value of this
will be the new object created when the function is invoked.