2009-11-26 38 views

Trả lời

3

Giá trị của this trong giao diện điều khiển sẽ được giống như giá trị của this trong mã hiện đang được thực hiện . Xem xét: -

function outer() 
{ 
     // this is window 

    var x = {n:12}; 

    var fn = function() 
    { 
       // this is object {n:12} 

     alert(this.n); 
    } 

    fn.call(x); 
} 

...

<img src="thing.gif" onclick="outer()" /> 

Nếu bạn đặt một điểm break trên dòng x = {n:12}, chuyển sang an ủi bạn sẽ tìm thấy this là cửa sổ. Tuy nhiên, khi bạn bước đến dòng alertthis trong bảng điều khiển là đối tượng được giữ bởi biến số x. IOW không có sự phân biệt giữa this trong ngữ cảnh thực thi và bảng điều khiển. Vì lý do này mà bạn có thể sử dụng giao diện điều khiển để tinh chỉnh các giá trị của biến và thuộc tính trong khi gỡ lỗi.

+0

cảm ơn bạn đã trả lời .. nhưng, một câu hỏi: Nếu tôi không bị mắc kẹt trong một điểm dừng, có thể "điều này" được khác hơn là cửa sổ trong giao diện điều khiển? –

2

Trong một chức năng gọi trực tiếp mà không một đối tượng chủ sở hữu rõ ràng, làm cho giá trị của này là mặc định đối tượng (cửa sổ trong trình duyệt).

Trong một chức năng gọi là sử dụng cú pháp gọi phương pháp , như objname.myFunction() hoặc objname['myFunction'](), nguyên nhân giá trị này được objname.

Xem thêm abot gọi hàm trong JavaScript

JavaScript, 5 ways to call a function

+0

Câu trả lời này chính xác vì nó không thực sự giải quyết câu hỏi vì nó liên quan đến hành vi của bảng điều khiển. – AnthonyWJones

2

Từ khóa this luôn đề cập đến chủ sở hữu của hàm được gọi. Bạn có thể đọc một lời giải thích rõ ràng và chi tiết về nó here.

Từ bài viết tôi liên kết ở trên hình ảnh này, tôi nghĩ giải thích rõ ràng nhất:

alt text http:////i49.tinypic.com/ax1jxw.png

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