Masukkan Password
49 DOM bukan JavaScript
Lecture ini sangat penting sebagai penutup bagian DOM, karena instructor ingin meluruskan satu hal yang sering membuat pemula salah paham:
DOM bukan JavaScript.
Lebih tepatnya, DOM API seperti document, getElementById(), querySelector(), createElement(), console.log(), dan banyak API lainnya bukan bagian dari bahasa JavaScript itu sendiri. API tersebut disediakan oleh environment tempat JavaScript dijalankan, terutama browser.
Mari kita bedah pelan-pelan.
1. Gambaran Besar Lecture Ini
Selama beberapa lecture sebelumnya, kamu sudah menggunakan kode seperti:
document.getElementById("fName");
document.querySelector(".login-button");
document.createElement("div");
element.remove();
console.log("Hello");
Mungkin selama ini muncul pemikiran:
“Oh, berarti
getElementById()adalah fitur JavaScript.”
Nah, tidak persis begitu.
JavaScript memang bahasa pemrogramannya, tetapi browser menyediakan berbagai kemampuan tambahan agar JavaScript bisa berinteraksi dengan dunia browser.
Gambaran sederhananya:
BROWSER
β
ββββββββββββββ΄βββββββββββββ
β β
JavaScript Engine Web APIs
β β
menjalankan JS menyediakan kemampuan
tambahan
β
βββββββββββββββββΌββββββββββββββββ
β β β
DOM Console Fetch
Jadi JavaScript dan browser bekerja sama.
2. JavaScript Itu Apa?
JavaScript adalah:
Programming language
Seperti:
- Python
- Java
- C++
- JavaScript
JavaScript mempunyai aturan dan fitur bahasanya sendiri.
Contohnya:
let name = "Budi";
let age = 25;
if (age >= 18) {
console.log("Adult");
}
function add(a, b) {
return a + b;
}
Konsep seperti:
let
const
if
else
function
return
+
-
*
/
===
&&
||
adalah bagian dari bahasa JavaScript/ECMAScript.
3. Lalu document Itu Apa?
Sekarang perhatikan:
document
Kamu sudah sering menggunakan:
document.getElementById(...)
document.querySelector(...)
document.createElement(...)
Tetapi:
documentbukan fitur yang didefinisikan oleh core JavaScript/ECMAScript.
document adalah object yang disediakan oleh browser environment untuk merepresentasikan dokumen HTML yang sedang dibuka.
Karena itu ketika JavaScript berjalan di browser, kita bisa melakukan:
document.querySelector("button");
Browser menyediakan object document.
4. Analogi Sederhana
Bayangkan:
JavaScript = bahasa yang kamu gunakan
Misalnya kamu bisa mengatakan:
“Tolong hitung 10 + 20.”
JavaScript bisa melakukan:
10 + 20
Tetapi kemudian kamu mengatakan:
“Tolong cari tombol Login di halaman website.”
Nah, ini bukan pekerjaan inti sebuah bahasa pemrograman.
Ini membutuhkan kemampuan dari browser.
Browser berkata:
“Oke, saya punya API untuk mengakses halaman HTML.”
Lalu browser menyediakan:
document.querySelector(".login");
Jadi:
JavaScript
β
β menggunakan
β
Browser Web APIs
β
βββ DOM API
βββ Console API
βββ Fetch API
βββ Storage API
βββ dll.
5. DOM Itu Apa?
Kamu sudah mempelajari DOM sebelumnya.
DOM = Document Object Model
Browser mengambil HTML:
<body>
<h1>Hello</h1>
<button>Login</button>
</body>
Kemudian browser membuat representasi object/tree dari HTML tersebut:
Document
β
βββ body
βββ h1
β βββ "Hello"
β
βββ button
βββ "Login"
JavaScript kemudian bisa berinteraksi dengan representasi tersebut:
document.querySelector("button");
Jadi JavaScript bisa mengatakan kepada browser:
“Berikan saya element button.”
Browser memberikan object DOM tersebut.
6. Jadi Apa Hubungan JavaScript, Browser, dan DOM?
Ini bagian paling penting.
BROWSER
β
βββββββββββββ΄ββββββββββββ
β β
JavaScript Engine Web APIs
β β
β βββββββ΄ββββββ
β β β
β DOM Console
β β
β Fetch
β
β
menjalankan kode JS
JavaScript engine bertugas menjalankan JavaScript.
Browser menyediakan berbagai API agar JavaScript bisa melakukan hal-hal yang berhubungan dengan browser.
7. Contoh yang Sudah Kamu Pelajari
Misalnya:
const button = document.querySelector("#login");
Mari kita pecah:
document
β
browser menyediakan object ini
β
.querySelector()
β
browser menyediakan method ini
β
"#login"
β
CSS selector
Jadi JavaScript memanfaatkan API browser.
8. getElementById() Bukan Core JavaScript
Misalnya:
document.getElementById("fName");
Yang termasuk JavaScript adalah syntax dan konsep seperti:
const element = ...
Sedangkan:
document.getElementById()
berasal dari API yang disediakan environment browser.
Hal yang sama berlaku untuk:
document.querySelector();
document.createElement();
document.getElementsByName();
dan berbagai DOM API lainnya.
9. Bagaimana Kalau JavaScript Dijalankan di Node.js?
Nah, ini contoh yang sangat bagus untuk memahami konsep tersebut.
Kamu sudah tahu bahwa JavaScript tidak hanya bisa berjalan di browser.
JavaScript juga bisa dijalankan menggunakan:
Node.js
Node.js adalah runtime environment untuk menjalankan JavaScript di luar browser.
Misalnya:
console.log("Hello World");
Node.js bisa menjalankan ini.
Tetapi:
document.querySelector("button");
akan bermasalah dalam Node.js standar karena Node.js tidak menyediakan DOM browser seperti document pada browser.
10. Kenapa Node.js Tidak Punya document?
Karena Node.js bukan browser.
Bayangkan browser punya:
Browser
βββ HTML page
βββ DOM
βββ window
βββ document
βββ localStorage
βββ browser events
βββ Web APIs
Sedangkan Node.js digunakan untuk menjalankan JavaScript di lingkungan server/komputer:
Node.js
βββ JavaScript runtime
βββ filesystem APIs
βββ networking
βββ server capabilities
βββ dll.
Tidak ada halaman HTML browser yang sedang dikelola secara default.
Jadi:
document.querySelector(...)
tidak tersedia secara default.
11. Ini Analogi yang Sangat Mudah
Bayangkan JavaScript adalah orang yang bisa melakukan banyak hal.
Browser adalah rumah tempat orang tersebut berada.
Rumah menyediakan fasilitas:
Browser
βββ pintu
βββ lampu
βββ telepon
βββ TV
βββ dokumen HTML
JavaScript bisa menggunakan fasilitas tersebut.
Kalau orang yang sama pindah ke rumah lain:
Node.js
fasilitasnya berbeda.
Mungkin ada:
Node.js
βββ file system
βββ network
βββ server
βββ process
Tetapi tidak ada:
document
karena tidak ada halaman HTML browser secara default.
Jadi:
JavaScript-nya sama, tetapi environment-nya berbeda.
12. JavaScript β Browser
Ini mental model yang sangat penting.
Jangan berpikir:
JavaScript = Browser
Yang benar:
JavaScript
+
Runtime Environment
β
Program berjalan
Contohnya:
JavaScript
+
Browser
β
Web application
atau:
JavaScript
+
Node.js
β
Server / CLI / backend application
Jadi JavaScript adalah bahasanya.
Browser atau Node.js adalah environment/runtime yang menjalankan JavaScript dan menyediakan kemampuan tertentu.
13. ECMAScript Berperan di Mana?
Kamu sebelumnya sudah belajar tentang ECMAScript.
Hubungannya kira-kira:
ECMAScript
β
spesifikasi bahasa JavaScript
β
JavaScript language
Kemudian browser menyediakan Web APIs di luar core language tersebut.
Gambaran:
βββββββββββββββββββββββββββββββββ
β JavaScript Language β
β β
β let, const, if, function β
β arrays, objects, operators β
β promises, classes, dll. β
βββββββββββββββββββββββββββββββββ
+
βββββββββββββββββββββββββββββββββ
β Browser Web APIs β
β β
β document / DOM β
β console β
β fetch β
β localStorage β
β timers β
β events β
β dll. β
βββββββββββββββββββββββββββββββββ
β
Browser
Ini adalah cara berpikir yang bagus.
14. console.log() Juga Bukan Core JavaScript
Ini juga menarik.
Kamu hampir pasti sering menggunakan:
console.log("Hello");
Instructor menjelaskan bahwa console.log() juga disediakan oleh environment, bukan fitur core ECMAScript dalam arti yang sama seperti if, let, atau function.
Browser menyediakan object:
console
dan method:
console.log()
Karena itu JavaScript dapat menggunakannya.
15. Tapi console.log() Bisa Dipakai di Node.js, Kan?
Betul.
Ini bagian yang kadang membuat pemula bingung.
Kita tadi bilang:
console.log()disediakan environment.
Node.js juga menyediakan console API.
Jadi:
console.log("Hello");
bisa berjalan di:
Browser
dan:
Node.js
Karena keduanya menyediakan API console.
Jadi jangan berpikir:
“Kalau bukan core JavaScript, berarti hanya browser yang punya.”
Tidak.
Environment yang berbeda bisa menyediakan API yang mirip atau berbeda.
16. Contoh Perbedaan Browser dan Node.js
Misalnya:
Browser
document.querySelector("#login");
Bisa karena browser menyediakan DOM.
Node.js
document.querySelector("#login");
Tidak tersedia secara default.
Sebaliknya Node.js punya API untuk filesystem, misalnya:
fs.readFile(...)
Browser tidak memberikan akses filesystem server seperti Node.js.
Jadi:
Browser APIs β Node.js APIs
walaupun keduanya bisa menjalankan JavaScript.
17. Browser Bukan Cuma Untuk Menampilkan HTML
Ini juga poin penting dari lecture.
Kita sering berpikir browser hanya:
“Menampilkan website.”
Sebenarnya browser melakukan jauh lebih banyak.
Browser:
Browser
β
βββ Render HTML/CSS
β
βββ Menjalankan JavaScript
β
βββ Menyediakan DOM API
β
βββ Menyediakan Console API
β
βββ Menyediakan Web Storage
β
βββ Menyediakan Fetch API
β
βββ Menangani event
β
βββ Menyediakan timer
β
βββ dll.
Jadi browser adalah runtime environment yang sangat kaya.
18. Browser Sebagai Runtime Environment
Istilah penting dari lecture:
Runtime environment
Artinya lingkungan tempat program dijalankan.
Untuk JavaScript:
JavaScript code
β
Runtime environment
β
JavaScript dijalankan
Contoh:
Browser
β
JavaScript Engine + Web APIs
atau:
Node.js
β
JavaScript Engine + Node APIs
19. JavaScript Engine
Lecture juga menyebut:
JavaScript engine
JavaScript engine adalah komponen yang bertugas memahami dan menjalankan JavaScript.
Contohnya, browser Chrome menggunakan engine bernama V8.
Browser lain memiliki engine masing-masing.
Secara sederhana:
JavaScript code
β
JavaScript Engine
β
kode dijalankan
Misalnya:
let a = 10;
let b = 20;
console.log(a + b);
Engine menjalankan logika JavaScript tersebut.
20. Lalu Web API Apa?
Sekarang kita sampai pada bagian yang menjadi fokus lecture.
Web API adalah kumpulan interface/kemampuan yang disediakan oleh browser agar JavaScript bisa berinteraksi dengan lingkungan web.
Contohnya:
Web APIs
β
βββ DOM API
βββ Console API
βββ Fetch API
βββ Storage API
βββ Timer APIs
βββ Event-related APIs
βββ dll.
Jadi ketika kamu menulis:
document.querySelector(...)
kamu sedang menggunakan kemampuan yang disediakan browser.
21. DOM API
Ini yang baru saja kamu pelajari dalam banyak lecture.
Contoh:
document.getElementById("intro");
document.querySelector(".button");
document.createElement("div");
element.remove();
element.classList.add("active");
Semua ini berkaitan dengan DOM/browser APIs.
22. Console API
Contoh:
console.log("Hello");
console.error("Something went wrong");
console.warn("Warning");
Browser menyediakan console agar developer dapat melakukan debugging/logging.
23. Fetch API
Lecture juga menyebut:
fetch()
Ini digunakan untuk melakukan HTTP request.
Misalnya nanti kamu akan belajar:
fetch("/api/users")
Secara konsep:
JavaScript
β
fetch()
β
Browser Web API
β
HTTP request
β
Server
Jadi fetch() juga merupakan kemampuan web platform yang digunakan dari JavaScript.
24. Web API dan Event yang Kamu Pelajari
Ini juga menghubungkan lecture ini dengan lecture sebelumnya.
Kamu baru saja belajar:
document.addEventListener("keydown", ...)
dan:
button.addEventListener("click", ...)
Event system di browser juga merupakan bagian dari kemampuan platform web.
Jadi ketika kamu menulis:
document.addEventListener(...)
JavaScript menggunakan API yang diberikan oleh environment browser.
25. Lalu Apa Hubungannya dengan Event Loop?
Instructor mengatakan bahwa di lecture mendatang mereka akan membahas:
JavaScript Engine
Web APIs
Callback Queue
Microtask Queue
Event Loop
Ini adalah topik besar dan sangat penting.
Gambaran kasarnya:
BROWSER
β
βββββββββββββ΄ββββββββββββ
β β
JavaScript Engine Web APIs
β β
β timer / events /
β fetch / dll.
β
β
Call Stack
β
β
Event Loop
β
β
Queue
Nanti kamu akan memahami bagaimana JavaScript yang pada dasarnya menjalankan kode secara single-threaded bisa berinteraksi dengan operasi asynchronous seperti:
setTimeout(...)
fetch(...)
Untuk sekarang, belum perlu menghafal mekanismenya.
Lecture ini hanya memberikan gambaran bahwa browser mempunyai beberapa komponen yang bekerja bersama.
26. Hal yang Sering Disalahpahami
β Salah pemahaman
“JavaScript punya
document.”
Lebih tepat:
JavaScript yang berjalan di browser dapat menggunakan
documentkarena browser menyediakan DOM API.
β Salah pemahaman
“
querySelector()adalah syntax JavaScript.”
Bukan syntax bahasa seperti if atau function.
Lebih tepat:
querySelector()
β
DOM API
β
browser
β Salah pemahaman
“Kalau JavaScript bisa dijalankan di Node.js, berarti
documentpasti ada.”
Tidak.
Karena:
JavaScript β Browser
Node.js memiliki environment/API sendiri.
27. Bandingkan Core JavaScript dengan Browser API
Ini tabel yang sangat bagus untuk kamu simpan.
| Core JavaScript / ECMAScript | Browser/Web API |
|---|---|
let | document |
const | querySelector() |
if | getElementById() |
for | createElement() |
function | classList |
return | addEventListener() |
| Array | fetch() |
| Object | localStorage |
| String | console |
| Number | DOM events |
=== | Browser timers |
Catatan: pembagian API bisa lebih bernuansa secara spesifikasi, tetapi tabel ini cocok untuk mental model beginner.
28. Contoh Nyata dari Code Kamu
Misalnya:
const input = document.getElementById("fName");
const name = input.value;
console.log(name);
Apa yang terjadi?
const
const
β fitur bahasa JavaScript.
document
document
β object yang disediakan browser.
getElementById()
document.getElementById()
β DOM API.
.value
input.value
β property dari DOM element.
console
console
β API yang tersedia dari environment.
console.log()
console.log()
β method console API.
Jadi satu baris kode bisa melibatkan JavaScript language + browser APIs sekaligus.
29. Visualisasi Paling Penting
Misalnya kamu menulis:
document.querySelector("#login");
Secara mental:
KODE KAMU
β
β
document.querySelector()
β
β
Browser Web API
β
β
DOM
β
β
cari #login
β
β
DOM Element
JavaScript menjadi “pengguna” API browser.
30. Analogi Restoran π½οΈ
Ini analogi yang mungkin membantu.
Bayangkan:
JavaScript = pelanggan
Browser = restoran
Web API = menu layanan restoran
Kamu sebagai pelanggan bisa meminta:
“Saya mau mengambil element button.”
Browser menyediakan layanan:
DOM API
Kamu memanggil:
document.querySelector("button");
Atau kamu mengatakan:
“Saya mau melakukan HTTP request.”
Browser menyediakan:
Fetch API
dan kamu menggunakan:
fetch(...)
Jadi JavaScript tidak harus membangun semuanya sendiri.
Ia menggunakan fasilitas yang diberikan environment.
31. Kenapa Konsep Ini Penting?
Karena nanti ketika kamu belajar:
- Node.js
- React
- backend
- browser
- asynchronous JavaScript
- Fetch API
- Web APIs
- event loop
kamu tidak akan bingung:
“Ini JavaScript atau fitur browser?”
Kamu akan mulai bisa membedakan:
JavaScript Language
β
βββ syntax
βββ variables
βββ functions
βββ objects
βββ arrays
βββ operators
βββ language features
Environment
β
βββ Browser
β βββ DOM
β βββ fetch
β βββ localStorage
β βββ events
β βββ console
β
βββ Node.js
βββ filesystem
βββ server/network
βββ process
βββ dll.
32. Satu Hal Penting: “Web API Ditulis dalam JavaScript” Bukan Berarti Bagian dari JavaScript Language
Caption lecture mengatakan Web APIs juga ditulis dalam JavaScript.
Jangan sampai ini membuat bingung.
Ada perbedaan antara:
API dapat diakses menggunakan JavaScript
dan:
API tersebut merupakan bagian dari spesifikasi bahasa JavaScript.
Misalnya:
document.querySelector()
bisa kita panggil menggunakan syntax JavaScript.
Tetapi querySelector() adalah bagian dari platform web/DOM API, bukan fitur core language seperti:
let
function
if
return
Jadi:
Bahasa JavaScript
β
digunakan untuk
β
mengakses Browser APIs
33. Connection dengan Semua Lecture DOM Sebelumnya
Ini sebenarnya adalah kesimpulan besar dari section DOM.
Kamu sudah belajar:
Mengambil element
document.getElementById()
document.querySelector()
Mengubah isi
element.textContent
element.innerHTML
Mengubah class
element.classList.add()
element.classList.remove()
element.classList.contains()
Membuat element
document.createElement()
Memasukkan element
appendChild()
insertAdjacentElement()
Menghapus element
element.remove()
Event
addEventListener()
Keyboard
event.key
Form
element.value
element.checked
Semua kemampuan tersebut kamu akses dari JavaScript ketika JavaScript berjalan di browser environment.
34. Jadi Kalau Ditanya: “DOM Itu JavaScript?”
Jawaban:
Tidak. DOM adalah model/struktur dokumen yang disediakan oleh browser, dan JavaScript dapat mengakses serta memanipulasinya menggunakan DOM APIs.
Mental model:
HTML
β
Browser
β
DOM
β
JavaScript
JavaScript berinteraksi dengan DOM.
JavaScript bukan DOM.
35. Kalau Ditanya: “Apa itu Web API?”
Jawaban sederhana:
Web API adalah sekumpulan API yang disediakan oleh browser/web platform agar JavaScript dapat berinteraksi dengan fitur dan lingkungan web, seperti DOM, network, storage, events, dan lainnya.
Contoh:
DOM API
Console API
Fetch API
Storage API
Event APIs
36. Kalau Ditanya: “Kenapa document.querySelector() Tidak Bisa Dipakai di Node.js?”
Jawaban:
Karena
documentdan DOM API tersebut disediakan oleh browser. Node.js memang menjalankan JavaScript, tetapi environment Node.js standar tidak menyediakan browser DOM.
Ini jawaban interview yang bagus.
37. Jangan Sampai Salah Memahami “JavaScript Bisa Berjalan di Mana Saja”
Pernyataan:
“JavaScript bisa berjalan di browser dan server.”
Benar.
Tetapi jangan menyimpulkan:
“Semua JavaScript API tersedia di semua tempat.”
Salah.
Lebih tepat:
JavaScript
β
βββββββββββ΄ββββββββββ
β β
Browser Node.js
β β
Browser APIs Node APIs
β β
DOM filesystem
fetch server
storage process
events network
JavaScript language-nya sama, tetapi environment dan API yang tersedia berbeda.
38. Cheat Sheet
| Istilah | Pengertian mudah |
|---|---|
| JavaScript | Bahasa pemrograman |
| ECMAScript | Spesifikasi standar bahasa JavaScript |
| Browser | Runtime environment untuk web |
| JavaScript Engine | Komponen yang menjalankan JS |
| DOM | Representasi dokumen HTML dalam bentuk object/tree |
| DOM API | API untuk mengakses/manipulasi DOM |
| Web API | API yang disediakan browser/web platform |
document | Object untuk mengakses dokumen/DOM |
querySelector() | Mencari element menggunakan CSS selector |
getElementById() | Mencari element berdasarkan ID |
createElement() | Membuat DOM element |
console.log() | Logging melalui Console API |
fetch() | API untuk HTTP/network request |
| Node.js | Runtime untuk menjalankan JS di luar browser |
39. Mental Model Besar
Kalau semua lecture ini dirangkum dalam satu gambar:
JAVASCRIPT
(bahasa pemrograman)
β
β dijalankan oleh
β
RUNTIME ENVIRONMENT
β
ββββββββββββ΄βββββββββββ
β β
BROWSER NODE.JS
β β
β β
Browser Web APIs Node APIs
β
βββββββββΌβββββββββ
β β β
DOM Console Fetch
β
β
HTML / Web Page
Jadi ketika kamu menulis:
document.querySelector("#login");
mental model-nya adalah:
JavaScript
β
memanggil
Browser Web API
β
DOM API
β
mengakses DOM
β
mendapatkan element
π§ Inti yang Harus Kamu Ingat
Ada 5 kalimat yang paling penting dari lecture ini:
1.
JavaScript adalah bahasa pemrograman.
2.
Browser adalah salah satu environment yang menjalankan JavaScript.
3.
DOM bukan JavaScript.
DOM adalah model dokumen yang disediakan oleh browser.
4.
document,querySelector(),getElementById(),createElement(), dan API DOM lainnya adalah kemampuan dari Web/DOM API yang dapat digunakan oleh JavaScript di browser.
5.
JavaScript bisa berjalan di environment lain seperti Node.js, tetapi API yang tersedia bisa berbeda.
Jadi rumus mental paling sederhananya:
JavaScript
= bahasa pemrograman
+
Runtime Environment
β
ββββββββββββ΄βββββββββββ
β β
Browser Node.js
β
Web APIs
β
DOM
Dan ini adalah fondasi yang sangat bagus sebelum masuk ke topik JavaScript runtime, Call Stack, Web APIs, Callback Queue, Microtask Queue, dan Event Loop yang disebut instructor di akhir lecture.