Cho đoạn code sau. Kết quả là:
Trả lời:
Đáp án đúng: C
Đoạn code sử dụng prototype để thêm thuộc tính `bark` vào constructor function `Dog`. Tuy nhiên, cách gọi `console.log` lại có sự khác biệt.
- `console.log(Dog.breed, Dog.bark);` truy cập thuộc tính `breed` trực tiếp từ constructor `Dog` và thuộc tính `bark` cũng từ `Dog` (không phải một instance của `Dog`). Vì `breed` được định nghĩa trực tiếp trên `Dog` nên nó trả về 'Border Collie'. Tuy nhiên, `bark` là một prototype method, không phải static property, nên khi truy cập trực tiếp từ `Dog` nó sẽ trả về `undefined`.
- `Dog.prototype.bark` thực chất là một function, và khi ta truy xuất `Dog.bark` thì kết quả sẽ là `undefined` vì `bark` không được định nghĩa trực tiếp trên `Dog` mà nằm trong prototype của `Dog`.
Do đó, kết quả in ra sẽ là "Border Collie, 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

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
