Trong ví dụ của bạn this
là đối tượng window
toàn cầu. Hãy tự thử:
<form action="javascript:alert(typeof this.setTimeout);">
kết quả là "function"
(tức là chức năng toàn cầu). Hoặc thử:
<form action="javascript:alert(this.nodeType);">
kết quả trong undefined
(ví dụ: nó không trỏ đến phần tử form) *.
Giá trị của "this"
bên trong một thuộc tính sẽ chỉ là một trong hai điều:
- đối tượng
window
toàn cầu
- các yếu tố tự
Thời gian duy nhất this
điểm để các phần tử chính nó là khi nó được sử dụng bên trong một intrinsic event attribute (các giá trị được bắt đầu bằng "on"
, ví dụ: "onclick"
, "onload"
, v.v.) Các thuộc tính này là đặc biệt: các phạm vi của trình duyệt this
đối với phần tử sự kiện đang kích hoạt và tạo đối tượng event
(với tên đó) cũng có sẵn bên trong thuộc tính.
Nếu thuộc tính là không một trong những sự kiện nội tại, "this"
sẽ là đối tượng window
toàn cầu.
Chú thích:
* tất nhiên trừ khi bạn xảy ra để có một var toàn cầu mang tên "nodeType"
Nguồn
2009-09-29 10:13:31
Bạn có thể nhận thêm thông tin với bảng điều khiển.dir() trong Firebug (Firefox extension) hoặc Web Inspector (công cụ phát triển Safari/Chrome). – eyelidlessness
Ngoài ra, hãy thử thực hiện "alert (this.innerHTML)" –