JS模块与命名空间的介绍_javascript技巧
起因
将代码组织到类中的一个重要原因是让代码更加“模块化”,可以在很多不同的场景中实现代码的重用。但类不是唯一的模块化代码的方式。
一般来讲,模块是一个独立的JS文件。模块文件可以包含一个类定义、一组相关类、一个实用函数库或者一些待执行的代码。
模块化的目标是支持大规模的程序开发,处理分散源中代码的组装,并且能让代码正确运行,哪怕包含了不需要的模块代码,也可以正确执行代码。
理想状态下,所有模块都不应当定义超过一个全局标识。
模块函数
通过把模块定义在某个函数的内部来实现,定义的变量和函数都属于该函数的局部变量,在函数外不可见。实际上,可以将这个函数作用域用做模块的命名空间(模块函数)
一旦将模块代码封装进一个函数中,就需要一些方法导出公用API,以便在模块函数外部调用它们。下面有几种方式导出公用API:
首先创建一个命名空间
// 创建一个全局变量用来存放与学校相关的模块
var school; // 创建school命名空间
if(!school) school = {};
1. 利用构造函数
// 返回Student构造函数来导出公共API
school.Student = (function() {
function Student() {
}
// ...... 定义Student的原型对象和私有属性和方法 ........
return Student; // 返回Student构造方法导出公共API
})();
2. 返回命名空间对象
如果模块API包括多个单元,则它可以返回命名空间对象
// 为school添加students模块
school.students = (function() {
// 这里定义了很多类如课程类/成绩类, 使用局部变量和函数
function Subject() { /* ... */ }
function Grade() { /* ... */ }
// 通过返回命名空间对象将API导出
return {
Subject: Subject,
Grade: Grade
};
})();
3. 通过关键字new调用
另外一种类似类似技术:把模块函数当做构造函数,通过new来调用。把它们(公共API)赋值给this属性来将其导出
school.students = (new function() {
// ..... 这里省略了代码 ......
// 将API导到this对象中
this.Subject = Subject;
this.Grade = Grade;
// 注意,这里没有返回值
}()); // 括号写在里面。这里是创建新实例,new后面应紧跟构造函数的调用而不是表达式
4. 已定义命名空间对象
作为一种替代方案,如果已经定义了全局命名空间对象,通过模块函数可以直接设置那个对象的属性。
// 如果已经定义了命名空间对象
var school; // 创建school命名空间
if(!school) school = {};
school.students = {}; // student命名空间已经定义
(function(students) {
// ..... 这里省略了代码 ......
// 将公共API导到上面定义的命名空间中
students.Subject = Subject;
students.Grade = Grade;
// 这里也不需要返回值
})(school.students);
为此,导出公共API的方式已经讲完。

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Selesaikan ralat PHP: Kelas ruang nama yang ditentukan tidak ditemui Semasa membangunkan menggunakan PHP, kami sering menghadapi pelbagai mesej ralat. Salah satu ralat biasa ialah "Kelas ruang nama yang ditentukan tidak dijumpai". Ralat ini biasanya disebabkan oleh fail kelas yang diimport tidak dirujuk dengan betul ruang nama. Artikel ini menerangkan cara menyelesaikan masalah ini dan menyediakan beberapa contoh kod. Mula-mula, mari kita lihat contoh mesej ralat biasa: Fatalerror:UncaughtError:C

Redis ialah pangkalan data storan nilai kunci berprestasi tinggi sumber terbuka. Apabila menggunakan Redis untuk penyimpanan data, kita perlu mempertimbangkan reka bentuk ruang nama utama dan mekanisme tamat tempoh untuk mengekalkan prestasi dan integriti data Redis. Artikel ini akan memperkenalkan idea reka bentuk dan kaedah pelaksanaan ruang nama dan mekanisme tamat tempoh Redis. 1. Idea reka bentuk ruang nama Redis Dalam Redis, kekunci boleh ditetapkan sewenang-wenangnya. Untuk memudahkan pengurusan dan perbezaan jenis data yang berbeza, Redis memperkenalkan konsep ruang nama. kehidupan

Rangka kerja F3 ialah rangka kerja PHPWeb yang ringkas, mudah digunakan, fleksibel dan boleh diperluaskan. Mekanisme ruang nama (Namespace)nya memberikan kita struktur kod yang lebih standard, lebih mudah dibaca dan lebih jelas. Dalam artikel ini, kami akan meneroka cara menggunakan ruang nama dalam rangka kerja F3. 1. Apakah ruang nama? Ruang nama sering digunakan untuk menyelesaikan masalah konflik penamaan dalam PHP Ia boleh merangkum satu atau lebih kelas, fungsi atau pemalar dalam ruang nama, yang bersamaan dengan menambah awalan kepada mereka. contoh

C++ ialah bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas Ia mempunyai fleksibiliti dan skalabiliti yang tinggi, tetapi ia juga memerlukan pembangun untuk menguasai peraturan tatabahasanya dengan ketat untuk mengelakkan ralat. Salah satu ralat biasa ialah "penggunaan ruang nama yang tidak ditentukan". Artikel ini menerangkan maksud ralat ini, sebab ia berlaku dan cara membetulkannya. 1. Apakah kegunaan ruang nama yang tidak ditentukan? Dalam C++, ruang nama ialah cara mengatur kod yang boleh diguna semula untuk memastikan ia modular dan boleh dibaca. Fungsi dengan nama yang sama boleh dibuat menggunakan ruang nama

Contoh ciri baharu dalam PHP8: Bagaimana untuk menggunakan ruang nama dan kod untuk menyusun struktur kod dengan lebih baik? Pengenalan: PHP8 ialah versi penting bahasa pengaturcaraan PHP, yang memperkenalkan banyak ciri dan penambahbaikan baharu yang menarik. Salah satu ciri baharu yang paling penting ialah ruang nama. Ruang nama ialah cara untuk menyusun kod anda ke dalam struktur yang lebih baik yang mengelakkan konflik antara kelas, fungsi dan pemalar dengan nama yang sama. Dalam artikel ini, kita akan melihat cara memanfaatkan ruang nama dan kod untuk menstrukturkan kod PHP8 anda dengan lebih baik

Ruang nama: Syurga Modulariti Dalam pembangunan perisian, kebolehselenggaraan adalah faktor penting. Memandangkan pangkalan kod anda terus berkembang, menyusun dan merangkum kod anda adalah penting untuk mengurus kerumitan. Ruang nama dalam PHP direka untuk tujuan ini. Konsep Ruang Nama Ruang nama ialah koleksi pengecam yang berkaitan secara logik. Ia menyediakan mekanisme untuk mengatur kelas, fungsi, dan pemalar ke dalam domain tertentu. Ruang nama menghapuskan konflik nama dengan memberikan setiap entiti nama yang unik, menghalang kelas atau fungsi yang berbeza daripada mempunyai nama yang sama. Sintaks ruang nama adalah dalam PHP Ruang nama ditakrifkan menggunakan garis miring ke belakang (): namespaceMyProjectDatabase membuat fail bernama "MyProject

Cara menyelesaikan ralat ruang nama PHP dan menjana mesej ralat yang sepadan PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas untuk membangunkan aplikasi web. Dalam PHP, ruang nama ialah mekanisme untuk mengurus dan mengatur kod, yang boleh mengelakkan konflik penamaan dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Walau bagaimanapun, disebabkan kerumitan definisi dan penggunaan ruang nama, ralat kadangkala berlaku. Artikel ini akan memperkenalkan beberapa kaedah untuk menyelesaikan ralat ruang nama PHP dan menjana gesaan ralat yang sepadan. 1. Namakan ruang

Ciri baharu dalam PHP 5.4: Cara menggunakan alias ruang nama untuk memudahkan panggilan nama kelas Fungsi ruang nama yang diperkenalkan dalam PHP 5.3 memberikan kami cara yang lebih baik untuk mengatur dan mengurus kod. Dengan mengatur kelas, fungsi dan pemalar yang berkaitan ke dalam ruang nama, konflik penamaan antara modul yang berbeza boleh dielakkan dengan berkesan. Dalam versi PHP5.4, fungsi alias ruang nama (namespacealias) telah diperkenalkan, yang memudahkan lagi panggilan dan
