0:00:01.300,0:00:03.734 Một tính năng hay của JS là 0:00:03.734,0:00:07.033 tạo hình ảnh động. 0:00:07.033,0:00:09.330 Nhưng mà trước khi đụng đến cái đó, tôi muốn đảm bảo là 0:00:09.330,0:00:11.833 bạn hiểu về 1 global variable (biến toàn cục) này nữa, 0:00:11.833,0:00:16.833 biến này tồn tại trên mọi web page, gọi là window variable. 0:00:17.075,0:00:21.312 Tôi sẽ console.log biến đó và bạn cũng có thể dừng video, 0:00:21.312,0:00:24.600 vào dev tools xem trong biến đó có những gì. 0:00:27.075,0:00:28.234 Bạn thấy chưa? 0:00:28.234,0:00:29.733 Nó to thật đấy. 0:00:29.733,0:00:33.812 Có nhiều thông tin đến choáng ngợp. 0:00:33.812,0:00:35.603 Để bớt choáng thì tôi 0:00:35.603,0:00:37.567 sẽ cho bạn biết một số thuộc tính 0:00:37.567,0:00:40.411 và hàm mà bạn sẽ thường dùng đến trong biến đó. 0:00:40.411,0:00:44.133 Có window.location, tức là 0:00:44.133,0:00:47.210 thông tin về URL của trang web. 0:00:48.458,0:00:51.709 Tôi sẽ viết cái đó luôn ra trang này 0:00:51.709,0:00:54.662 để bạn đỡ phải dừng video liên tục. 0:00:54.662,0:00:57.000 Vậy là có textContent, rồi ta chỉ 0:00:57.000,0:01:02.000 "The URL of this page is " + window.location, 0:01:03.460,0:01:04.756 nhưng mà cái này là một đối tượng, nên 0:01:04.756,0:01:08.586 ta sẽ phải đi vào trong đối tượng đấy để tìm thuộc tính .href. 0:01:08.586,0:01:10.766 Thế là xong. Đây chính là URL của 0:01:10.766,0:01:13.525 trang web iframed này. 0:01:14.800,0:01:18.201 Một thuộc tính khác là window.navigator.userAgent, 0:01:18.201,0:01:21.857 tức là thông tin về trình duyệt 0:01:21.857,0:01:25.551 của dười dùng, gõ... 0:01:25.551,0:01:28.136 "The user agent is " 0:01:28.136,0:01:31.955 + window.navigator.userAgent. 0:01:33.386,0:01:36.138 Cái string về user agent này sẽ 0:01:36.138,0:01:38.809 trông khá là lộn xộn, 0:01:38.809,0:01:42.133 vì nó không phải để cho người đọc, 0:01:42.133,0:01:43.683 và cũng khá là loạn 0:01:43.683,0:01:46.200 vì vốn người ta quen dặt nó thế. 0:01:46.200,0:01:49.333 Vậy nên khi lập trình web thì người ta sẽ dùng các thư viện có sẵn 0:01:49.333,0:01:51.967 để giải mã thông tin trong string này 0:01:51.967,0:01:55.100 xem trình duyệt và phần mềm hệ thống của người dùng là gì, đại loại thế. 0:01:55.100,0:01:57.372 Vì string này tự nó khó hiểu lắm. 0:01:59.140,0:02:00.712 Giờ đến một cái khác dễ hiểu hơn. 0:02:00.728,0:02:05.225 Có window.outerWidth và window.outerHeight. 0:02:05.225,0:02:08.478 Ví dụ, viết 0:02:10.199,0:02:15.199 "This webpage is " + window.outerWidth 0:02:15.426,0:02:17.509 ta hiện chiều rộng trước, 0:02:17.509,0:02:21.130 + " by " + window.outerHeight. 0:02:21.130,0:02:24.198 Với tôi thì kết quả là 1280 by 715, 0:02:24.198,0:02:25.855 nhưng với bạn thì chắc sẽ là số khác, 0:02:25.855,0:02:28.973 tuỳ theo kích thước mà bạn đang xem 0:02:28.973,0:02:30.822 video này. 0:02:31.900,0:02:35.500 Giờ tôi sẽ cho bạn thấy một cái hay nữa. 0:02:35.500,0:02:40.348 Tôi sẽ xoá chữ window trong code này đi. 0:02:41.533,0:02:45.333 Và bạn thấy là code vẫn 0:02:45.333,0:02:49.927 chạy bình thường, là vì 'window' là 0:02:49.927,0:02:52.902 biến toàn cục mặc định trên trang web. 0:02:52.902,0:02:56.435 Khi trình duyệt tìm kiếm biến mà bạn muốn dùng, 0:02:56.435,0:03:00.098 nó sẽ tìm ở trong đối tượng window, 0:03:00.098,0:03:03.174 vì khi bạn tạo một biến toàn cục mới, 0:03:03.174,0:03:07.833 thì đối tượng window sẽ lưu biến đó làm thuộc tính của mình. 0:03:07.833,0:03:09.935 tức là bạn không nên tự tạo 0:03:09.935,0:03:13.200 biến có tên outerWidth hay outerHeight, 0:03:13.200,0:03:14.974 vì những biến tự tạo đó sẽ đè lên 0:03:14.974,0:03:18.100 các biến mặc định window.outerWidth và window.outerHeight. 0:03:18.100,0:03:20.603 Thường thì bạn nên không tạo biến toàn cục nào cả 0:03:20.603,0:03:23.474 vì chúng rất dễ đụng lẫn nhau 0:03:23.474,0:03:27.502 hoặc đụng vào các biến có sẵn trong window. 0:03:27.502,0:03:31.638 Để an toàn hơn, bạn cũng có thể tạo tiền tố cho các biến toàn cục, 0:03:31.638,0:03:35.833 ví dụ như trong Khan Academy, ta viết thêm KA_ 0:03:35.833,0:03:38.622 lên đằng trường tất cả các biến toàn cục, để khỏi lẫn. 0:03:40.003,0:03:42.133 Vậy là xong về đối tượng window. 0:03:42.133,0:03:44.187 Tiếp theo ta sẽ học cách dùng 0:03:44.187,0:00:00.000 2 hàm trong đó để tạo hình ảnh động.