


Bercakap tentang pelbagai pemahaman tentang fungsi dalam kemahiran JavaScript_javascript
Fungsi dalam JavaScript mempunyai pelbagai makna. Ia mungkin pembina (pembina), yang memainkan peranan templat objek; mungkin kaedah objek (kaedah), yang bertanggungjawab untuk menghantar mesej kepada objek; . juga boleh menjadi fungsi , ya ia adalah fungsi, fungsi yang wujud secara bebas dan boleh dipanggil tanpa sebarang hubungan dengan objek.
Disebabkan oleh kompromi pereka bahasa, beberapa ciri berkaitan kelas telah ditambahkan pada JavaScript untuk menjadikan JavaScript kelihatan seperti Java dan boleh menjadi "berorientasikan objek". Walaupun JavaScript telah menambah baharu dan ini, tiada kelas (ES telah menambahnya). Akhirnya, fungsi mengambil tugas kelas buat sementara waktu.
Semantik 1: berfungsi sebagai pembina
/** * 页签 * * @class Tab * @param nav {string} 页签标题的class * @param content {string} 页面内容的class * */ function Tab(nav, content) { this.nav = nav; this.content = content; } Tab.prototype.getNav = function() { return this.nav; }; Tab.prototype.setNav = function(nav) { this.nav = nav; }; Tab.prototype.add = function() { }; // 创建对象 var tab = new Tab('tab-nav', 'tab-content');
Tab kelas ditakrifkan di sini dan tab objek dibuat. Fungsi, ini, baru digunakan di atas. ini, baru ialah kata kunci dalam bahasa berorientasikan objek biasa, dan fungsi di sini memainkan peranan kelas dalam bahasa berorientasikan objek tradisional. Sudah tentu, penamaan pengecam pada masa ini secara amnya mengikut peraturan "huruf besar pertama".
Semantik 2: berfungsi sebagai kaedah objek
Memandangkan objek boleh dibuat terus dalam JavaScript tanpa kelas, terdapat dua cara untuk menambah kaedah pada objek. Yang pertama adalah untuk menentukan kelas terlebih dahulu dan menggantung kaedah pada prototaip, seperti Tab dalam contoh di atas Prototaip mempunyai getNav, setNav dan kaedah tambah. Terdapat satu lagi cara untuk menambah kaedah secara langsung pada ini dalam fungsi.
function Tab(nav, content) { this.nav = nav this.content = content this.getNav = function() { // ... } this.setNav = function() { // ... } this.add = function() { // ... } }
Tab di sini ialah semantik, this.getNav/this.setNav/this.add ialah semantik, sebagai kaedah objek. Selain itu, objek dan kaedahnya boleh ditakrifkan secara langsung
var tab = { nav: '', content: '', getNav: function() { // ... }, setNav: function() { // ... }, add: function() { // ... } }
tab.getNav/tab.setNav/tab.add adalah semantik, sebagai kaedah tab objek.
Semantik 3: Sebagai fungsi bebas
/* * 判断对象是否是一个空对象 * @param obj {Object} * @return {boolean} */ function isEmpty(obj) { for (var a in obj) { return false } return true } // 定义一个模块 ~function() { // 辅助函数 function now() { return (new Date).getTime() } // 模块逻辑... }(); // 采用CommonJS规范的方式定义一个模块 define(require, exports, moduel) { // 辅助函数 function now() { return (new Date).getTime() } // 模块逻辑... })
isEmpty wujud sebagai fungsi global, dan kini dalam definisi modul wujud sebagai fungsi setempat Sama ada isEmpty atau sekarang, fungsi di sini merujuk kepada fungsi tidak bergantung pada objek dan kelas dan boleh dipanggil secara bebas.
Semantik 4: Modul definisi fungsi tanpa nama
// 全局命名空间 var RUI = {} // ajax.js ~function(R) { // 辅助函数... ajax = { request: function() { // ... } getJSON: function() { // ... } ... } // 暴露出模块给 R R.ajax = ajax }(RUI); // event.js ~function(R) { // 辅助函数... // 事件模块定义... // 暴露出模块给 R R.event = event }(RUI); // dom.js ~function(R) { // 辅助函数... // DON模块定义... // 暴露出模块给 R R.dom = dom }(RUI);
Selepas fungsi tanpa nama di sini dilaksanakan, objek API terdedah kepada RUI Tidak kira berapa banyak kerja yang dilakukan dalam fungsi tanpa nama, ia tidak boleh dilihat di luar fungsi tanpa nama yang sepadan dan tidak perlu memberi perhatian. kepadanya. Kebimbangan terakhir ialah kaedah API awam Selagi anda memahami parameter dan maksud kaedah ini, anda boleh menggunakannya dengan segera.
Semantik 5: Fungsi tanpa nama mengendalikan kesan khas tertentu seperti memproses beberapa data tanpa mendedahkan terlalu banyak pembolehubah
// 判断IE版本的hack方式 var IEVersion = function() { var undef, v = var div = document.createElement('div') var all = div.getElementsByTagName('i') while ( div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', all[] ); return v > ? v : undef }();
Akhirnya, hanya terdapat satu hasil IEVersion dan beberapa pembolehubah tempatan yang digunakan dalam fungsi tanpa nama semuanya boleh diasingkan. Kaedah ini sangat berkesan dan padat untuk beberapa pemprosesan data sementara.
Ringkasan:
JavaScript direka oleh Eich dalam beberapa hari Ia pada asalnya merupakan skrip/bahasa fungsional yang pendek dan padat Atas sebab pemasaran, untuk memenuhi Java, beberapa ciri berorientasikan objek seperti Java telah ditambahkan (pembina, ini, baru. ). Ini dan baru disalin, tetapi fungsi kelas diserahkan kepada berfungsi. Akibatnya, fungsi JavaScript mengelirukan Kadangkala ia digunakan untuk menentukan kelas, dan kadangkala ia digunakan sebagai kaedah atau fungsi. Sesetengah orang juga mendapati bahawa ia boleh digunakan untuk menentukan modul dan sebagainya.
Semua ini berakhir dengan ketibaan ES Kata simpanan "kelas" dalam ES akhirnya dicadangkan untuk menggunakan kelas untuk mentakrifkan kelas. Terdapat juga kata kunci lanjutan, yang pada asasnya membawa "warisan kelas". Douglas mengulas pada persidangan Nordic.js bahawa salah satu reka bentuk ES yang paling teruk adalah kelas Selain itu, ia tidak disyorkan untuk menggunakan ini dan baru Ini menunjukkan bahawa dia masih menyukai penggunaan bahasa berfungsi untuk menulis JavaScript, dan bukannya objek -berorientasikan berdasarkan kelas .
Kandungan di atas adalah pemahaman peribadi saya tentang fungsi dalam JavaScript Rakan yang mempunyai pemahaman yang berbeza dialu-alukan untuk berkongsi dan belajar serta maju bersama.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Python lebih sesuai untuk sains data dan pembelajaran mesin, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya, dan sesuai untuk analisis data dan pembangunan web. 2. JavaScript adalah teras pembangunan front-end. Node.js menyokong pengaturcaraan sisi pelayan dan sesuai untuk pembangunan stack penuh.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft