JavaScript is required

Đoạn code sau sẽ có kết quả là:
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
const ti = new Person('du', 'ti');
const teo = Person('du', 'teo');
console.log(ti);
console.log(teo);

A.
Person {firstName: "du", lastName: "ti"} undefined
B.
Person {firstName: "du", lastName: "ti"} Person {firstName: "du", lastName:"teo"}'
C.
Person {firstName: "du", lastName: "ti"} {}
D.
Person {firstName: "du", lastName: "ti"} ReferenceError
Trả lời:

Đáp án đúng: A


Đoạn code trên minh họa cách sử dụng hàm tạo (constructor) trong JavaScript. Khi sử dụng từ khóa `new`, một đối tượng mới được tạo ra và `this` trong hàm `Person` sẽ tham chiếu đến đối tượng mới này. Trong trường hợp `const ti = new Person('du', 'ti');`, `ti` sẽ là một đối tượng `Person` với các thuộc tính `firstName` là 'du' và `lastName` là 'ti'. Tuy nhiên, khi gọi `Person('du', 'teo');` mà không có từ khóa `new`, `this` sẽ tham chiếu đến đối tượng global (trong trình duyệt là `window`, trong Node.js là `global`). Do đó, `firstName` và `lastName` sẽ được gán vào `window.firstName` và `window.lastName` (hoặc `global.firstName` và `global.lastName`). Vì hàm `Person` không trả về giá trị nào một cách tường minh, nó sẽ trả về `undefined` theo mặc định. Vì vậy, `console.log(ti)` sẽ in ra đối tượng `Person {firstName: "du", lastName: "ti"}`, và `console.log(teo)` sẽ in ra `undefined`.

Tổng hợp 500 câu hỏi trắc nghiệm Javascript có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan