<input type="button" value="Button 1" id="btn1" />
<input type="button" value="Button 2" id="btn2" />
<input type="button" value="Button 3" id="btn3" onclick="buttonClicked();"/>
<script type="text/javascript">
function buttonClicked(){
var text = (this === window) ? 'window' : this.id;
console.log(text);
}
var button1 = document.getElementById('btn1');
var button2 = document.getElementById('btn2');
button1.onclick = buttonClicked;
button2.onclick = function(){
buttonClicked();
};
</script>
Câu hỏi:cố gắng tìm ra 'này' trong một số mã js
khi nhấp chuột button1, cho thấy: btn1
, bấm button2 và button3, cho thấy: window,
tại sao không btn2
, btn3
?
Bạn nên đọc [về ** từ khóa ** này] (http://www.quirksmode.org/js/this.html) – doppelgreener
Mặc dù trang QuirksMode giải thích nó rất tốt, tôi không hoàn toàn chắc chắn liệu "sao chép" là từ đúng. Nó không sao chép các chức năng, chỉ cần sao chép một tham chiếu đến nó. Ngữ cảnh gọi là những gì đặt tham chiếu 'this' này cho ngữ cảnh thực thi hàm. –
Và bạn có thể dễ dàng kiểm tra xem chức năng không được sao chép * là 'button1.onclick = buttonClicked; Các hàm 'là các đối tượng và sự so sánh bình đẳng giữa các đối tượng chỉ trả về true nếu cả hai tham chiếu trỏ đến cùng một đối tượng. –