2012-04-21 13 views
7

Tôi đang tìm hiểu về nguyên mẫu javascript và thực hiện một Fiddle (http://jsfiddle.net/3MuZa/1/) với javascript này:Tại sao bàn điều khiển lưu ý rằng tôi đã thay đổi nguyên mẫu trước khi làm?

function Animal(name, sound) { 
    this.name = name; 
    this.sound = sound; 
} 

var dog = new Animal("Dog", "Bark"); 
console.debug(dog.__proto__); 

Animal.prototype.makeSound = function() {console.log(this.sound);}; 

Điều thú vị là, console.debug(dog.__proto__); tiết lộ rằng makeSound là một phương pháp nguyên mẫu của lớp Thú.

Tuy nhiên, tôi thêm phương thức đó vào nguyên mẫu ở dòng sau. Tại sao Console lại lưu ý rằng nguyên mẫu có phương thức makeSound nếu luồng điều khiển chưa nhận được trong mã của tôi?

+2

Đặt điểm ngắt trên dòng cuối cùng đó. Thực hiện cho điểm ngắt đó. Kiểm tra bảng điều khiển. Bạn sẽ thấy rằng 'makeSound' không hiện diện. –

+0

Cảm ơn bạn! Thật vậy, thiết lập một điểm ngắt và kiểm tra các biến cục bộ cho thấy phương thức 'makeSound' không tồn tại. –

Trả lời

6

Bảng điều khiển là "hoạt động". ngay cả khi bạn đăng nhập trước, nó sẽ phản ánh những thay đổi sau này.

Theo như tôi biết, nó hoạt động như thế này trên các đối tượng, chức năng, mảng. Nhưng nếu bạn đăng nhập chuỗi, booleans và số, họ in những gì họ có nghĩa là tại thời điểm họ đã đăng nhập.

+0

Nếu bạn thay đổi 'console.debug' thành' console.log', nó hoạt động như mong đợi. –

+0

@JamesMcLaughlin Ý của bạn là gì "như mong đợi"? Tôi thấy không có sự khác biệt giữa gỡ lỗi và đăng nhập. –

+0

Cảm ơn, cùng ở đây. Tôi không nghĩ tôi thấy sự khác biệt. –

Các vấn đề liên quan