JavaScript đa hàm tạo

Hàm tạo là một hàm đặc biệt dùng để tạo và khởi tạo một thể hiện đối tượng của một lớp. Trong JavaScript, hàm tạo được gọi khi một đối tượng được tạo bằng từ khóa

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
1

Mục đích của hàm tạo là tạo đối tượng mới và đặt giá trị cho bất kỳ thuộc tính đối tượng hiện có nào

 

Điều gì xảy ra khi một nhà xây dựng được gọi?

Khi một hàm tạo được gọi trong JavaScript, chuỗi hoạt động sau đây sẽ diễn ra

  • Một đối tượng trống mới được tạo
  • Từ khóa
    //Constructor
    function User[] {
    this.name = 'Bob';
    }
    
    var user1 = new User[];
    var user2 = new User[];
    2 bắt đầu tham chiếu đến đối tượng mới và nó trở thành đối tượng thể hiện hiện tại
  • Đối tượng mới sau đó được trả về dưới dạng giá trị trả về của hàm tạo

 

Ví dụ về Trình tạo JavaScript

Dưới đây là một số ví dụ về hàm tạo trong JavaScript

Sử dụng từ khóa "này"

Khi từ khóa

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
2 được sử dụng trong hàm tạo, nó đề cập đến đối tượng mới được tạo

//Constructor
function User[] {
    this.name = 'Bob';
}

var user = new User[];

 

Tạo nhiều đối tượng

Trong JavaScript, nhiều đối tượng có thể được tạo trong một hàm tạo

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];

Trong ví dụ trên, hai đối tượng được tạo bằng cùng một hàm tạo

 

Constructor với tham số

Một hàm tạo cũng có thể có các tham số

//Constructor
function User [name, age] {
    this.name = name;
    this.age = age;
}

var user1 = new User['Bob', 25];
var user2 = new User['Alice', 27];

Trong ví dụ trên, các đối số được truyền cho hàm tạo trong quá trình tạo đối tượng. Điều này cho phép mỗi đối tượng có các giá trị thuộc tính khác nhau

 

Trình xây dựng so với đối tượng theo nghĩa đen

Một đối tượng bằng chữ thường được sử dụng để tạo một đối tượng trong khi hàm tạo rất hữu ích để tạo nhiều đối tượng

//Object literal
let user = {
    name: 'Bob'
}
//Constructor
function User[] {
    this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];

Mỗi đối tượng được tạo bằng hàm tạo là duy nhất. Các thuộc tính có thể được thêm hoặc xóa khỏi một đối tượng mà không ảnh hưởng đến một đối tượng khác được tạo bằng cùng một hàm tạo. Tuy nhiên, nếu một đối tượng được tạo bằng cách sử dụng một đối tượng theo nghĩa đen, thì bất kỳ thay đổi nào được thực hiện đối với biến được gán giá trị đối tượng sẽ thay đổi đối tượng ban đầu

 

Nguyên mẫu đối tượng

Các thuộc tính và phương thức có thể được thêm vào hàm tạo bằng nguyên mẫu

//Constructor
function User[] {
    this.name = 'Bob';
}

let user1 = new User[];
let user2 = new User[];

//Adding property to constructor using prototype
User.prototype.age = 25;

console.log[user1.age]; // 25
console.log[user2.age]; // 25

Trong ví dụ trên, hai đối tượng

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
1 được tạo bằng hàm tạo. Một thuộc tính mới
//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
2 sau đó được thêm vào hàm tạo bằng cách sử dụng một nguyên mẫu, được chia sẻ trên tất cả các phiên bản của đối tượng
//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
1

 

Trình xây dựng tích hợp

JavaScript có một số hàm tạo tích hợp, bao gồm các hàm sau

var a = new Object[]; 

var b = new String[];
var c = new String['Bob']

var d = new Number[];
var e = new Number[25];

var f = new Boolean[];
var g = new Boolean[true];

Mặc dù các hàm tạo này tồn tại, nhưng nên sử dụng các kiểu dữ liệu nguyên thủy nếu có thể, chẳng hạn như

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
0

Các chuỗi, số và booleans không nên được khai báo là các đối tượng vì chúng cản trở hiệu suất

 

Theo dõi, phân tích và quản lý lỗi với Rollbar

Quản lý lỗi và ngoại lệ trong mã của bạn là một thách thức. Nó có thể làm cho việc triển khai mã sản xuất trở thành một trải nghiệm đáng sợ. Khả năng theo dõi, phân tích và quản lý lỗi trong thời gian thực có thể giúp bạn tiến hành một cách tự tin hơn. Rollbar tự động theo dõi và xử lý lỗi, giúp việc sửa lỗi Java trở nên dễ dàng hơn bao giờ hết. Đăng ký hôm nay

Phương thức

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
4 là một phương thức đặc biệt để tạo và khởi tạo các đối tượng được tạo trong một lớp

Phương thức

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
4 được gọi tự động khi một lớp được bắt đầu và nó phải có tên chính xác là "hàm tạo", trên thực tế, nếu bạn không có phương thức tạo, JavaScript sẽ thêm một phương thức tạo vô hình và trống

Ghi chú. Một lớp không thể có nhiều hơn một phương thức constructor[]. Điều này sẽ ném một

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
6

Bạn có thể sử dụng phương thức

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
7 để gọi hàm tạo của lớp cha [xem phần "Ví dụ khác" bên dưới]

Hỗ trợ trình duyệt

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
4 là một tính năng của ECMAScript6 [ES6]

ES6 [JavaScript 2015] được hỗ trợ trong tất cả các trình duyệt hiện đại

ChromeEdgeFirefoxSafariOperaCóCóCóCóCó

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
4 không được hỗ trợ trong Internet Explorer 11 [hoặc cũ hơn]

cú pháp

chi tiết kỹ thuật

Phiên bản JavaScript. ECMAScript 2015 [ES6]

Thêm ví dụ

Để tạo kế thừa lớp, hãy sử dụng từ khóa

//Constructor
function User [name, age] {
    this.name = name;
    this.age = age;
}

var user1 = new User['Bob', 25];
var user2 = new User['Alice', 27];
0

Một lớp được tạo bằng kế thừa lớp kế thừa tất cả các phương thức từ lớp khác

Ví dụ

Tạo một lớp có tên là "Mô hình" sẽ kế thừa các phương thức từ lớp "Xe hơi"

class Xe {
  constructor[brand] {
    this. carname = brand;
  }
  present[] {
    return 'I have a ' + this. carname;
  }
}

class Mô hình mở rộng Ô tô {
  constructor[brand, mod] {
    super[brand];
    this. model = mod;
  }
  show[] {
    trả lại cái này. hiện tại [] + ', nó là ' + cái này. mô hình;
  }
}

mycar = new Model["Ford", "Mustang"];
tài liệu. getElementById["bản trình diễn"]. bên trongHTML = xe của tôi. show[];

Tự mình thử »

Phương thức

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
7 đề cập đến lớp cha

Bằng cách gọi phương thức

//Constructor
function User[] {
this.name = 'Bob';
}

var user1 = new User[];
var user2 = new User[];
7 trong phương thức khởi tạo, chúng ta gọi phương thức khởi tạo của cha mẹ và có quyền truy cập vào các thuộc tính và phương thức của cha mẹ

Tôi có thể có nhiều hàm tạo trong JavaScript không?

Chỉ có thể có một phương thức đặc biệt với hàm tạo tên trong một lớp . Có nhiều hơn một lần xuất hiện phương thức khởi tạo trong một lớp sẽ gây ra lỗi SyntaxError.

Bạn có thể tạo nhiều hàm tạo không?

Một lớp có thể có nhiều hàm tạo gán các trường theo những cách khác nhau . Đôi khi, việc xác định mọi khía cạnh của dữ liệu của một đối tượng bằng cách gán tham số cho các trường là hữu ích, nhưng những lúc khác, có thể chỉ xác định một hoặc một vài khía cạnh.

Ví dụ về nhiều hàm tạo là gì?

Một lớp có thể có nhiều hàm tạo với các loại đối số và số lượng đối số khác nhau . Ví dụ, trong lớp Car bên dưới, chúng ta có ba hàm tạo được viết cho lớp Car i. e. trống, một tham số và hai tham số.

Làm cách nào để sử dụng nhiều hàm tạo trong một lớp?

Mô phỏng nhiều hàm tạo trong lớp học của bạn. Một kỹ thuật khá hữu ích để mô phỏng nhiều hàm tạo trong một lớp Python là cung cấp . __init__[] với các đối số tùy chọn sử dụng các giá trị đối số mặc định . Bằng cách này, bạn có thể gọi hàm tạo của lớp theo nhiều cách khác nhau và nhận được một hành vi khác nhau mỗi lần.

Chủ Đề