JavaScript is required

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());

A.
Border Collie, Wooh
B.
Border Collie, undefined
C.
undefined, Wooh
D.
undefined, undefined
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