Làm cách nào để mô phỏng các lớp (và không gian tên) trong JavaScript?Làm cách nào để mô phỏng "các lớp" trong JavaScript? (có hoặc không có thư viện của bên thứ ba)
Tôi cần tạo thư viện JavaScript và có ít kinh nghiệm về ngôn ngữ. Tôi luôn nghĩ rằng nó có hỗ trợ riêng cho các lớp, nhưng nó ít liên quan đến Java hơn tôi đã giả định. Dường như mọi thứ trong JavaScript thực sự là một chức năng. Những gì tôi đã phát hiện ra cho đến nay rất có ý nghĩa với nó là một ngôn ngữ gõ động yếu, nhưng điều này làm cho nó một chút khởi hành cho những người đang sử dụng để có một ngôn ngữ gõ mạnh mẽ và sử dụng một trình biên dịch để phát hiện lỗi của chúng tôi :)
Tôi chủ yếu làm việc trong C# và Java, và hy vọng một cái gì đó tương tự như vậy thư viện sẽ trông quen thuộc với các nhà phát triển C# khác của chúng tôi.
Tôi có loại mã sau đây hoạt động, nhưng tôi đã tự hỏi những gì nhà phát triển khác sẽ làm được về điều này. Các lựa chọn thay thế là gì? Có cách nào tốt hơn không? Có cách nào dễ đọc hơn không?
Tôi hiểu rằng những gì tôi muốn là một cái gì đó tương tự như C# hoặc Java khi tôi chỉ chấp nhận thực tế rằng là JavaScript, nhưng mục đích của tôi là cố gắng giảm bớt đường cong học tập cho các nhà phát triển khác bằng cách làm cho nó quen thuộc hơn và trực quan cho họ.
//Perform the namespace setup (this will actually be done with checking
//in real life so we don't overwrite definitions, but this is kept short
//for the code sample).
var DoctaJonez = new function();
DoctaJonez.Namespace1 = new function();
/**
* Class description.
*/
DoctaJonez.Namespace1.SomeClass = function()
{
/**
* Public functions listed at the top to act like a "header".
*/
this.publicFunction = privateFunction;
/**
* Private variables next.
*/
var privateVariable;
/**
* Finally private functions.
*/
function privateFunction()
{
}
}
//Create an instance of the class
var myClass = new DoctaJonez.SomeClass();
//Do some stuff with the instance
myClass.publicFunction();
Tôi không biết bạn có thể làm điều đó, điều đó trông đẹp hơn rất nhiều. Cảm ơn bạn đã nhập :) +1 –