Cho đoạn code sau. Kết quả là:
let dog = {
breed: 'Border Collie',
sound: 'Wooh',
getBreed: () => {
return this.breed;
},
getSound: function() {
return this.sound;
}
};
console.log(dog.getBreed(), dog.getSound());
let dog = {
breed: 'Border Collie',
sound: 'Wooh',
getBreed: () => {
return this.breed;
},
getSound: function() {
return this.sound;
}
};
console.log(dog.getBreed(), dog.getSound());
breed: 'Border Collie',
sound: 'Wooh',
getBreed: () => {
return this.breed;
},
getSound: function() {
return this.sound;
}
};
console.log(dog.getBreed(), dog.getSound());
Trả lời:
Đáp án đúng: C
Trong đoạn code JavaScript này, chúng ta có một object `dog` với các thuộc tính `breed` và `sound`, cùng với hai phương thức `getBreed` và `getSound`.
- Phương thức `getBreed` được định nghĩa bằng arrow function `() => {}`. Arrow function không có `this` riêng của nó, nó kế thừa `this` từ phạm vi bao quanh (lexical scope). Trong trường hợp này, `this` bên trong `getBreed` không trỏ đến object `dog`, mà trỏ đến `window` (trong trình duyệt) hoặc `undefined` (trong môi trường Node.js nếu chạy ở strict mode). Do đó, `this.breed` sẽ trả về `undefined`.
- Phương thức `getSound` được định nghĩa bằng function declaration `function() {}`. Trong trường hợp này, `this` bên trong `getSound` trỏ đến object mà phương thức được gọi trên đó, tức là `dog`. Vì vậy, `this.sound` sẽ trả về giá trị của thuộc tính `sound` của object `dog`, là `'Wooh'`.
Do đó, `console.log(dog.getBreed(), dog.getSound())` sẽ in ra `undefined, Wooh`.
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
